请教Verilog的基础知识~
ADDRESS的值是5‘b0X000A=0;B=0;case(ADDRESS)5'b00???:A=1;5'b01???:B=1;5'b10?00,5'b11?00:be...
ADDRESS的值是5‘b0X000
A=0;
B=0;
case(ADDRESS)
5'b00???: A=1;
5'b01???: B=1;
5'b10?00,5'b11?00:
begin
A=1;
B=1;
end
endcase
答案是A=1,B=0
小弟刚接触VERILOG,请教下这道题谁能详细给解释一下吗?每句执行后的结果,还有5'b00???: 里的?是什么意思。。。谢谢拉~~ 展开
A=0;
B=0;
case(ADDRESS)
5'b00???: A=1;
5'b01???: B=1;
5'b10?00,5'b11?00:
begin
A=1;
B=1;
end
endcase
答案是A=1,B=0
小弟刚接触VERILOG,请教下这道题谁能详细给解释一下吗?每句执行后的结果,还有5'b00???: 里的?是什么意思。。。谢谢拉~~ 展开
展开全部
A=0; //初始化A的值
B=0;//初始化B的值
case(ADDRESS)
5'b00???: A=1;//只要高两位为00,不管低三位是什么,都让A为1
5'b01???: B=1;//只要高两位为01,不管低三位是什么,都让B为1
5'b10?00,5'b11?00://如果最高两位是10或者11,第3位不管是什么,最低两位是00的话,执行 下面的语句块,其实,完全可以用5'b1??00代替,如果你不在乎高阻态和未知态的话!
begin
A=1;//给A赋1
B=1;//给A赋1
end
endcase
解释:想算对结果,必须得理解阻塞赋值的特点才行。
阻塞赋值的特点是如果对一个信号两次赋值的话,第二次赋值有效。刚开始的时候你赋初始值都为0,然后会根据ADDRESS的值对A和B的值进行改动,这时如果你的ADDRESS为5'b00???,所以仅对A进行了第二次赋值,赋为1,而B没有变化,这也就是你的结果。
学习verilog,我觉得首先要分清阻塞赋值和非阻塞赋值的区别,很重要,不过只要是verilog的资料都会有说这方面的。
B=0;//初始化B的值
case(ADDRESS)
5'b00???: A=1;//只要高两位为00,不管低三位是什么,都让A为1
5'b01???: B=1;//只要高两位为01,不管低三位是什么,都让B为1
5'b10?00,5'b11?00://如果最高两位是10或者11,第3位不管是什么,最低两位是00的话,执行 下面的语句块,其实,完全可以用5'b1??00代替,如果你不在乎高阻态和未知态的话!
begin
A=1;//给A赋1
B=1;//给A赋1
end
endcase
解释:想算对结果,必须得理解阻塞赋值的特点才行。
阻塞赋值的特点是如果对一个信号两次赋值的话,第二次赋值有效。刚开始的时候你赋初始值都为0,然后会根据ADDRESS的值对A和B的值进行改动,这时如果你的ADDRESS为5'b00???,所以仅对A进行了第二次赋值,赋为1,而B没有变化,这也就是你的结果。
学习verilog,我觉得首先要分清阻塞赋值和非阻塞赋值的区别,很重要,不过只要是verilog的资料都会有说这方面的。
2011-08-06
展开全部
友客it论坛有教程,你百度下就能找到了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询