Verilog设计初步
Verilog 代码模板
1 | //语句关键字字母都为小写字母,大小写敏感 |
四位选择器
1 | module mux4_1(out,in0, in1, in2,in4,sel); |
数据类型及运算符
- 整数类型
- 构成是:字符宽度+进制+数值。
- 例如:2’0xd5; 宽度为2的十六进制d5。
- 逻辑类型
- 高低电平 1 0,电路里体现为电压的区间
- x:未知
- z: 高阻
- net类型
- 常用的是wire。用法是 wire[7:0] databus。 //databus宽度8
- 寄存器类型
- reg
- integer
- time
- real
- realtime
- parameter参数
- 用来定义符号常量。 parameter sel = 8’ha3。
- 向量类型
- 逻辑运算符
- 位运算符
- 三目运算
- 位拼接运算符
下例采用数据流方式描述1位全加器。
在本例中,有两个连续赋值语句。这些赋值语句是并发的,与其书写的顺序无关。只要
连续赋值语句右端表达式中操作数的值变化(即有事件发生), 连续赋值语句即被执行。如果A
变化,则两个连续赋值都被计算,即同时对右端表达式求值,并将结果赋给左端目标。
语句
- initial
- always @(敏感信号)
- @ (posedge clk) 上升沿
- @ (negedge clk) 下降沿触发
- 赋值语句
- 连续赋值语句assign 只要连续赋值语句右端表达式中操作数的值变化, 连续赋值语句即被执行。
- 阻塞赋值 a = b; ————-非时序赋值(组合)
- 非阻塞赋值 a<=b ————时序赋值中使用
- 时序和组合在电路上的表现是时序赋值过程中需要等待时钟沿来触发。
函数
设计特点
层次化模块化
顶层模块和底层模块的设计方法,将模块细分为若干个子模块,在底层实现子模块功能,在顶层组合各个子模块。