打印
[Verilog HDL]

Verilog知识大全

[复制链接]
2846|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
对Verilog语法有一定基础看起来用处更大一些。
一、Verilog中的缩进运算符 二、Verilog中的拼接运算符 三、Verilog中运算优先级

使用特权

评论回复

相关帖子

沙发
gaochy1126|  楼主 | 2022-7-31 21:24 | 只看该作者
四、为什么缺少else default等分支会出现锁存器 五、Verilog中打节拍的实际含义
实际的含义是多级延迟触发器
六、function的用法

使用特权

评论回复
板凳
gaochy1126|  楼主 | 2022-7-31 21:24 | 只看该作者
我们一般在什么情况下给他们分配成电路的形式呢?
七、时序优化到底是什么意思1. 累加拆解 2. 累乘拆解

使用特权

评论回复
地板
gaochy1126|  楼主 | 2022-7-31 21:24 | 只看该作者




使用特权

评论回复
5
gaochy1126|  楼主 | 2022-7-31 21:24 | 只看该作者
3. 函数嵌套模式拆解


使用特权

评论回复
6
gaochy1126|  楼主 | 2022-7-31 21:24 | 只看该作者
八、有限状态机的设计步骤
  • 确定输入、输出、状态的总数。
  • 定义输入输出的含义,将电路状态进行编号。
  • 列出状态转换表或画出状态转换图。
九、三种状态机的风格主要采用三段式状态机

使用特权

评论回复
7
gaochy1126|  楼主 | 2022-7-31 21:25 | 只看该作者
十、testbench的主要写法
模块在testbech中的例化
  • 数据流的描述方式


使用特权

评论回复
8
gaochy1126|  楼主 | 2022-7-31 21:25 | 只看该作者
2. 行为描述方式
主要是always & initial
3. 结构化的描述方式
11、'define & parameter & localparam
`define 与localparam和parameter最大的区别就是`define 可以跨文件传递参数;parameter只能在模块间传递参数;而localparam只能在其所在的module中起作用,不能参与参数传递。
`define和`include一起使用。

使用特权

评论回复
9
gaochy1126|  楼主 | 2022-7-31 21:25 | 只看该作者
12、仿真过程中时钟产生的方法
always
forever
13、Verilog中reg、integer、real、time
上面的四种类型均为寄存器类型,在很多的仿真文件中,会出现integer定义的寄存器,因为integer定义起来更加方便,默认是有符号的32位位宽的数据。
real是一个实数,一般不可综合。
time对仿真时间进行保存,其中宽度为64,通过调用系统函数 $time 获取当前仿真时间。
14、 Verilog中的$display、$write和$monitor
$display(p1,p2, …,pn);
$write(p1,p2, …,pn);
参数p1通常称为:“格式控制”,参数p2至pn通常称为“输出列表”。
$display自动地在输出后进行换行,$write则不是这样。如果想在一行里输出多个信息,可以使用$write。
$monitor函数可以对输出的变量进行实时的监控,当有变量改变时,整个参数列表中的变量或表达式的值都会输出,从而实现对变量的实时监控。


使用特权

评论回复
10
gaochy1126|  楼主 | 2022-7-31 21:25 | 只看该作者
15、Verilog中条件编译命令`ifdef、`else、`endif用法
和C、C++类似,
` ifdef 宏名(标识符——define 命令定义)
程序段 1
`else
程序段 2
`endif
16、Verilog中$finish和$stop
$finish出现时,会提示要不要退出仿真。如果选是,则仿真结束,退出仿真窗口。
遇到stop暂停,在TCL窗口中输入 run -continue,继续完成仿真。
$finish(0),仿真退出时不打印任何信息。
$finish(1),仿真退出时打印仿真时间和 $finish 所在的行信息。
17、Verilog 循环语句——while, for, repeat, forever
循环语句只能在 always 或 initial 块中使用,但可以包含延迟表达式。
while (condition) begin …end
for(initial_assignment; condition ; step_assignment) begin …end
forever begin …end
repeat (loop_times) begin …end
具体实例可参考:

使用特权

评论回复
11
gaochy1126|  楼主 | 2022-7-31 21:26 | 只看该作者
18、生成随机数的函数
$random()
例1:reg[23:0] rand; rand = $random % 60; 给出了一个范围在-59到59之间的随机数。
例2:reg[23:0] rand; rand = {$random} % 60; 通过位并接操作产生一个值在0到59之间的数。
例3:reg[23:0] rand; rand = min+{$random}%(max-min+1);
Q:reg是无符号的寄存器类型,怎么存储有符号的数据?
仿真的测试结果存储的实例

使用特权

评论回复
12
gaochy1126|  楼主 | 2022-7-31 21:26 | 只看该作者
19、测试中常见的系统函数

使用特权

评论回复
13
gaochy1126|  楼主 | 2022-7-31 21:26 | 只看该作者
20、testbench中的任务与fork-join
task应该和function进行对比**。
testbench中的任务:
封装在task-endtask之间。
定义:
举例:

任务的调用:

任务和函数的区别

使用特权

评论回复
14
gaochy1126|  楼主 | 2022-7-31 21:26 | 只看该作者
综上:任务很强大!
并行化的fork-join(begin-end)
fork-join和begin-end都属于块语句,区别:begin-end内部的语句是串行执行的,fork-join中的语句是并行执行的。
举例:

重要:在验证的过程中常用的使用方法:


使用特权

评论回复
15
gaochy1126|  楼主 | 2022-7-31 21:26 | 只看该作者
21、在testbench中存储波形

重要:编写testbench的注意事项

22、verilog语法小结

使用特权

评论回复
16
deluoba666| | 2022-8-8 14:59 | 只看该作者
在看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1050

主题

11299

帖子

26

粉丝