时序逻辑设计之计数器
基于XILINX BASYS 3板
时序逻辑基本概念
组合逻辑电路:二选一多路器、三八译码器
计数器基本概念
D端口送到Q端口需满足CK(时钟的)上升沿(0->1)出现,故D触发器具有存储特性–计数器。
50MHz 20ns(T=20ns)
500ms/20ns
500 000000/20=25000000
BIN:25位的值才能最大表示
设计一个4位加法器结构图
设计一个1s频率闪烁的LED灯
(亮灭各500ms)
源文件
module led_flash(
Clk,
Reset_n,
Led
);
input Clk;
input Reset_n;
output reg Led;
reg [24:0] counter;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
//低电平,清零,复位状态
counter <= 0;
// <=非阻塞赋值
else if(counter == 25000000-1)
counter <= 0;
else
counter <= counter + 1'd1;
always@(posedge Clk or negedge Reset_n)
if(!Reset_n)
Led <= 0;
else if(counter == 25000000-1)
Led <= !Led;
endmodule
测试激励文件
module led_flash_tb;
reg Clk;
reg Reset_n;
wire Led;
led_flash(
.Clk(Clk),
.Reset_n(Reset_n),
.Led(Led)
);
initial Clk = 1;
always #10 Clk = !Clk;
initial begin
Reset_n = 0;
#201;
Reset_n = 1;
end
endmodule
管脚分配
set_property IOSTANDARD LVCMOS33 [get_ports Clk]
set_property IOSTANDARD LVCMOS33 [get_ports Led]
set_property IOSTANDARD LVCMOS33 [get_ports Reset_n]
set_property PACKAGE_PIN U16 [get_ports Led]
set_property PACKAGE_PIN V17 [get_ports Reset_n]
set_property PACKAGE_PIN W5 [get_ports Clk]
引脚分配表格
计数值与计数时间的关系
所得时间-1
4
0–1 |
---|
1–2 |
2–3 |
3–0 |
0–1 |
计数器闪烁