Verilog中的赋值方式:

assign 引导的continuous 赋值

用于nets类型的数据,比如wire,左边的值随着右边的值连续变化,可理解为线网, 比如

wire carry_out, sum_out;

wire carry_in, a_in, b_in;

assign {carry_out, sum_out} = a_in + b_in + carry_in;

procedural 赋值

用于variable类型的数据比如reg, integer, real, time 和realtime类型的数据。这种赋值方式一般在always或者initial结构中,或者是在定义的时候也可声明 比如:

reg clk;

always #1; clk = ~clk;

initial clk = 1'b1;

reg test_reg = 1'b1;

具体还有阻塞赋值与非阻塞赋值的区别,这个下次单独总结

还有一种特殊的赋值方式

procedural continuous赋值

这种赋值由 assign/deassign 和 force/release引导

assign / deassign

assign对variable会覆盖掉

主要用于variable或者variable 的拼接,但不能用于variable 的bit select或者 part select

比如说用一个assign引导的procedural continuous写一个带预置位和清零的d触发器

module dff(q, d, clk, clr, preset);

input d;

input clk, clr, preset;

output q;

wire d;

wire clk, clr, preset;

reg q;

always @(preset, clr)begin

if(!clr)

assign q = 0;

else if(!preset)

assign q = 1'b1;

else

deassign q;

end

always @(posedge clk)begin

q = d;  // 这里用的是阻塞赋值

end

endmodule

如果clr或者preset为0时,那么时钟的上升沿不会影响到q, 当他们都为高时,q被deassign, 回到正常的procedural 赋值。

至于为什么用阻塞赋值,等我明白了再写。

force / release

force/release 可以用于net, variable, bit-select of vector net,  part-select of vector net,或者他们的拼接

force用于variable会覆盖掉过程赋值,或者assign引导的过程连续(procedural assign)赋值,直到release

force用于net会覆盖掉所有net的drive或者continuous assign,直到release

example

module test

reg a, b, c, d;

wire e;

and u_and(e, a, b, d);

initial begin

$monitor(" %d : d = %d, e = %d", $stime, d, e);

assign d = a & b & c;

a = 1;

b= 0;

c = 1;

#10;

force d = (a | b | c); // force右边可以是表达式,只要a, b, c其中一个改变,左边值就会变化

force e = (a | b | c);

#10;

release d;

release e;

#10;

$finish;

end

endmodule

结果

0: d=0; e = 0;

10: d = 1; e = 1; // force 强制变为或

20: d= 0; e = 0;

Verilog 中的Procedural continuous assignments相关推荐

  1. Verilog初级教程(21)Verilog中的延迟控制语句

    文章目录 前言 正文 延迟控制语句 事件控制语句 Named Events Event or operator 往期回顾 参考资料及推荐关注 前言 Verilog中的延迟控制有两种类型–延迟和事件表达 ...

  2. Verilog初级教程(14)Verilog中的赋值语句

    文章目录 前言 正文 合理的左值 过程性赋值(Procedural assignment) 连续赋值 过程连续性赋值 往期回顾 前言 何为赋值语句?即将值放到线网或者变量上,这种操作称为赋值,英文:a ...

  3. FPGA之道(35)Verilog中的并行与串行语句

    文章目录 前言 Verilog的并行语句 Verilog连续赋值语句 普通连续赋值语句 条件连续赋值语句 Verilog程序块语句 沿事件 纯组合always 纯时序always 具有同步复位的alw ...

  4. verilog中数组的定义_开源仿真工具Icarus Verilog中的verilog parser

    前面提到用flex和bison开处理命令行参数,回顾一下:开源仿真工具Icarus Verilog中的命令行参数处理方法. 那么Verilog的parser又是怎么实现的呢?简单地说,与做命令行参数的 ...

  5. FPGA的设计艺术(18)如何使用Verilog中的数组对存储器进行建模?

    前言 Verilog中的二维数组很有用,可以使用for以及generate for配合二维数组进行使用,可以代替大量寄存器的场合,其实大量同类寄存器可以使用存储器进行代替,Verilog中可以使用二维 ...

  6. Verilog初级教程(20)Verilog中的`ifdef 条件编译语句

    文章目录 前言 正文 语法 示例 Testbench文件 往期回顾 参考资料及推荐关注 前言 `ifdef条件编译语句在逻辑设计中还是很常见的,但也常见一些滥用的情况,这应该避免. 应该在什么情况下使 ...

  7. Verilog初级教程(15)Verilog中的阻塞与非阻塞语句

    文章目录 前言 正文 阻塞赋值 非阻塞赋值 往期回顾 参考资料以及推荐关注 前言 本文通过仿真的方式,形象的说明阻塞赋值以及非阻塞赋值的区别,希望和其他教程相辅相成,共同辅助理解. 正文 阻塞赋值 阻 ...

  8. Verilog初级教程(12)Verilog中的generate块

    文章目录 前言 正文 generate for generate if generate case 参考资料 本系列博文 前言 verilog中的generate块可以称为生成块,所谓生成,可以理解为 ...

  9. Verilog初级教程(11)Verilog中的initial块

    文章目录 前言 正文 语法格式 initial块是用来干什么的? initial块何时开始又何时结束? 一个模块中允许有多少个initial块? 参考资料 写在最后 前言 仿真中通常会依次执行一组Ve ...

  10. FPGA之道(37)Verilog中的编写注意事项

    文章目录 前言 Verilog中的编写注意事项 大小写敏感 Verilog中的关键字 范围定义的正确使用 不要省略begin与end 注释中斜杠的方向 编译指令中的前导符号 混用阻塞和非阻塞赋值的危害 ...

最新文章

  1. 工作方法及总结(给自己的忠告)
  2. 打印出所有的 info.plist 中的 keys、values
  3. IIS6.0下配置HTTP Gzip压缩 提高iis相应速度
  4. 内部类调用相同属性同名时的调用细节
  5. python网页优化_python大佬养成计划----JavaScript对html的优化
  6. Memcached使用手册
  7. ruby 执行函数_Ruby at()函数
  8. opencv火焰检测小项目
  9. uniapp---app端上传证件(身份证/银行卡)照片后转base64发送给后台功能实现
  10. html 中长单词换行问题
  11. 告别户外弱网困扰,4G多卡聚合设备增强弱网环境下应急救援信号
  12. 实验一 linux常用命令
  13. 51单片机之8×8点阵显示(74HC595)
  14. Linux tshark安装
  15. Verilog HDL语言入门(二)
  16. jQuery学习笔记05
  17. 三星(samsung)手机i699内容:解锁boot loader,刷recovery,刷机(刷rom),root综合教程
  18. 项目中用到的数字证书的创建,签名实现
  19. MySQL 2021-03-29
  20. 基于Python构建上市公司高送转预测模型

热门文章

  1. fabric ca 使用案例
  2. 粉丝文化:抖音广告短视频美妆营销中,男明星比女明星更带货?
  3. Flutter中StatefulWidget生命周期小记
  4. hdu2073 无限的路 瞎搞
  5. Pale Moon 15.1 发布,苍月浏览器
  6. python合并word表格_python docx处理word文档中表格合并问题
  7. (位于 xx.exe 中)引发的异常
  8. 据说教师资格证除了当老师还有这些用途
  9. opencv实现靶纸弹孔识别计数功能
  10. Python爬取动态加载的网站图片