功能描述
设计一个1s频率闪烁的led灯(亮灭各500ms)。
功能设计
1 D触发器
时序逻辑电路中的核心部件是D触发器。
功能:当时钟上升沿到来时,D端口的数据发送到Q端口。
特性:存储电平。
2 计数器-计数时钟
原理:cnt<=cnt+1;累加器。
默认Q端口在0时刻的值是0,累加器的一个端口永远值为1。
Q端口值 | clk1 | clk2 | clk3 |
---|---|---|---|
0 | 1 | 2 | 3 |
3 设计
设计定义的功能块中包含计数器,实现计数和延时功能。
reset_n表示低电平复位。
当时有这样一个疑问?为什么需要reset端口?
因为计数有限,不能说计数500ms亮,1000ms灭,1500ms亮……占用位宽,节省位宽。
语法
(1)reg定义的信号通常会被综合为一个寄存器(rigister),但前提是reg信号必须是在边沿触发的always块中被赋值。
本例中的cnt本身就是一个D触发器,定义为reg型。并且在always块中被赋值。
(2)if…else if … else 语句
先考虑极端情况,再else。
(3)reg信号都要在test bench中产生激励。写激励信号①定义电平,②延时。
时钟信号的产生:initial clk=1; always # 10 clk=~clk;
!是逻辑取反,~是按位取反,对于1bit信号是等价的。