总览:本文是基于 Xilinx 的zynq-7010开发板实现简单的4个led灯流水,并附上相应代码注释以及一些基本语法知识
`timescale 1ns / 1ps
#500 :延时500ns,精度为1ps
加位宽’d数字会变颜色,更好看,推荐加位宽
a<='d1:非阻塞式赋值
begin
//多条赋值语句
end
数据类型:
1.top.v
其中第一行是时间刻度,与之前仿真文件不同的是,我的源文件无论是单位还是精度都 采用了 1ps,首先我们要知道,延迟是无法被综合的,也就是代码中的延迟,在综合时会被 忽略,我们在源代码中添加延迟,主要是为了模拟一个寄存器的延迟,因为实际的硬件中, 寄存器赋值本身就不是一瞬间的事情,一般来说,7 系列 a 架构的 FPGA 寄存器延迟大概在
50ps 左右。 定义了两个 parameter 参数,一个是时钟频率,一个是 LED 的流水时间,设置成
parameter 类型的参数方便在上层模块或者换了板卡时,或者想要改变流水速度时方便修改。 端口定义了三个端口,因为是时序逻辑电路,所以最主要的便是时钟端口,通过输入一 个稳定的时钟,让内部逻辑有个统一的时间刻度,并让其在规定时间内完成规定的事。输入 了一个复位端口,通过复位信号给整个时序逻辑一个固定的初值。输出了四个 LED 端口。 定义了一个 localparam 参数用来计算当前 LED 流水速度下时钟需要计数的次数,由于这 个参数是根据时钟频率和流水速度共同决定,所以并不是一个外部能够直接修改的值,所以 采用 localparam 的形式。
16 行的 always 语句定义了一个计数器,触发信号为时钟上升沿或者复位下降沿,当复位