Verilog 入门 笔记2
Verilog 入门 笔记2
Always 语句
1 | always @ (posedge CLK) |
它不总在激活状态。
不满足条件就在挂起
Q一定要使reg类型。
敏感条件:
-
边沿敏感
(posedge 信号名) 新号上升沿到来
(negedge name)
-
电平敏感
(a,b,c) 任意一个信号发生变化
例:
1 | always @ (posedge CLK) |
在CLK上升时才把D给Q
1 | always @ (D) |
这个相当于始终Q和D的值一样
对比:
- assign:总是激活,一旦操作数变化,立刻计算赋值(赋值目标总是wire类型)
- always:满足条件才会(必须是reg型)
还可以和if case,
1 | module DFF@(CLK,D,Q,RST,EN) |
注意,verilog所有语句都是并行执行
<= 这个是赋值操作,不是小于等于
always中如果有多余赋值语句,必须用begin、end包起来
例:
不妨让A,B同时从0变成1
非阻塞赋值:
组合电路:阻塞赋值
时序电路:非阻塞赋值
例子:4位二进制加法计数器
1 | module CNT4 (CLK,Q); |
内部信号声明格式:
1 | 数据类型 位宽 信号名称 元素个数 |
底层模块
先涉及底层D触发器,再涉及顶层电路,在顶层电路里可以调用底层模块
顶层模块描述:要增加内部变量
顶层模块:
1 | module examp (clk, d, a, q) |
门原语
端口连接采用顺序法,输出在前,输入在后

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 zhangxixi的博客!

