永发信息网

verilog中有哪几种类型的赋值语句,说明它们的区别,并举例

答案:2  悬赏:0  手机版
解决时间 2021-01-03 23:17
  • 提问者网友:动次大次蹦擦擦
  • 2021-01-03 20:28
verilog中有哪几种类型的赋值语句,说明它们的区别,并举例
最佳答案
  • 五星知识达人网友:枭雄戏美人
  • 2021-01-03 21:18
integer类型也是一种寄存器数据类型,integer类型的变量为有符号数,而reg类型的变量则为无符号数,除非特别声明为有符号数,还有就是integer的位宽为宿主机的字的位数,但最小为32位,用integer的变量都可以用reg定义,只是对于用于计数更方便而已。reg,integer,real,time都是寄存器数据类型,定义在Verilog中用来保存数值的变量,和实际的硬件电路中的寄存器有区别

今天看代码时遇到了integer,只知道这是个整数类型,可详细的内容却一窍不通,查看了资料---《verilog数字VLSI设计教程》。其中是这么写到的:
大多数的矢量类型(reg或者net)都被默认当做无符号数。integer和real是个例外,它们被默认为当做有符号数。通常,real类型是不可综合的。
假设在没有溢出的情况下,不管是无符号数还是有符号数,它们都是二进制的一串数值而已;而当这个值被当做某种类型比较时:又符号数的MSB被用来表示这个数字的符号,而无符号数的MSB则是位权最高的那一位。无论采用什么样的二进制格式,一个无符号数永远也不能成为负值。
全部回答
  • 1楼网友:拾荒鲤
  • 2021-01-03 22:08
在verilog中有两种类型的赋值语句 连续赋值和过程赋值 赋值表达式由三个部分组成 左 值赋值运算符=或<= 和右值右值可以是任何类型的数据包括net型和register型但对连续 赋值 左值必须是net类型的数据 而过程赋值 左值必须是register类型的数据 下面将作详细描 述 1连续赋值 在initial或always外的assign赋值语句 称为连续赋值语句 一般在描述纯组合电路时使用 例 如 wire out //类型定义左值必须是net类型包括wire tri wand wor等等 assign out = a + b //综合结果为加法器 assign out = en ? a : b //多路选择器 assign out = en ? in : z //三态门 也可以在数据定义时同时进行连续赋值如 wire out = a + b 使用连续赋值语句 所有右值都是敏感信号 当右值发生变化时 计算表达式的值 并将结 果传给左值具有组合电路的特性输入变化输出立即变化 2过程赋值 在initial或always块中的赋值语句 称为过程赋值语句 包括三种 blocking赋值 non-blocking赋值和过程连续赋值assign/deassign blocking赋值与顺序相关的而non-blocking赋值与顺序无关一般来说使用non-blocking赋 值描述时序逻辑电路使用blocking赋值语句描述组合逻辑电路例如 reg x,y,z; //non-blocking assignment always @(posedge clk) begin x <= a && b; y <= x; z <= y; end reg x,y,z; //blocking assignment always @(posedge clk) begin x = a && b; y = x; z = y; end在verilog中有两种类型的赋值语句 连续赋值和过程赋值 赋值表达式由三个部分组成 左 值赋值运算符=或<= 和右值右值可以是任何类型的数据包括net型和register型但对连续 赋值 左值必须是net类型的数据 而过程赋值 左值必须是register类型的数据 下面将作详细描 述 1连续赋值 在initial或always外的assign赋值语句 称为连续赋值语句 一般在描述纯组合电路时使用 例 如 wire out //类型定义左值必须是net类型包括wire tri wand wor等等 assign out = a + b //综合结果为加法器 assign out = en ? a : b //多路选择器 assign out = en ? in : z //三态门 也可以在数据定义时同时进行连续赋值如 wire out = a + b 使用连续赋值语句 所有右值都是敏感信号 当右值发生变化时 计算表达式的值 并将结 果传给左值具有组合电路的特性输入变化输出立即变化 2过程赋值 在initial或always块中的赋值语句 称为过程赋值语句 包括三种 blocking赋值 non-blocking赋值和过程连续赋值assign/deassign blocking赋值与顺序相关的而non-blocking赋值与顺序无关一般来说使用non-blocking赋 值描述时序逻辑电路使用blocking赋值语句描述组合逻辑电路例如 reg x,y,z; //non-blocking assignment always @(posedge clk) begin x <= a && b; y <= x; z <= y; end reg x,y,z; //blocking assignment always @(posedge clk) begin x = a && b; y = x; z = y; end
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯