本次实验完成:led流水间隔0.5s
闪烁间隔0.25s。
名词解释:
analysis分析:对源文件进行全面的语法检查。
synthesis综合:综合的过程是由 FPGA 综合工具箱 HDL 原理图或其他形式源文件进行分析,进而推演出由 FPGA 芯片中底层基本单元表示的电路网表的过程。通俗的讲就是将自己的设计映射到 FPGA 中。
Implementation设计实现:加入一些约束文件。然后可以进行后仿真。
bitstream生成bit流文件:下载进开发板。
时序图:
代码:
分为流水与闪烁。
// led闪烁实验,间隔0.25s
module led(input wire sys_clk ,input wire sys_rst_n ,output reg [1:0] led_out
);parameter MAX_CNT25MS = 1_250_000 ;reg [23:0] cnt_25ms ;wire cnt_25ms_flag ;always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) cnt_25ms <= 24'd0 ;else if(cnt_25ms == MAX_CNT25MS - 1)cnt_25ms <= 24'd0 ;else cnt_25ms <= cnt_25ms + 1'b1 ;endassign cnt_25ms_flag = (cnt_25ms == MAX_CNT25MS - 1) ;// led_out always @(posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) led_out <= 2'd0 ;else if(cnt_25ms_flag)led_out <= ~led_out ;endendmodule
// 流水
module led(input wire sys_clk ,input wire sys_rst_n ,output reg [1:0] led_out
);parameter MAX_CNT500MS = 25_000_000 ; // 0.5s 5000_0000 1sreg [25:0] cnt_1s ;// reg [25:0] cnt_1salways @(posedge sys_clk or negedge sys_rst_n) begin // �첽��λ����Ϊ���������¼���if(!sys_rst_n)cnt_1s <= 26'd0 ;else if(cnt_1s == MAX_CNT500MS - 1)cnt_1s <= 26'd0 ;else cnt_1s <= cnt_1s + 1'b1 ;end// reg [1:0] led_out always @(posedge sys_clk or negedge sys_rst_n) beginif(!sys_rst_n) led_out <= 2'b01 ;else if(cnt_1s == MAX_CNT500MS - 1)led_out <= ~led_out ;elseled_out <= led_out ;end
ila_0 your_instance_name (.clk ( sys_clk ) , // input wire clk.probe0 ( led_out ) , // input wire [1:0] probe0 .probe1 ( cnt_1s ) // input wire [25:0] probe1
);
endmodule
仿真代码:
`timescale 1ns/1ns
module test_led();reg sys_clk ;reg sys_rst_n ;wire [1:0] led_out ;led led_inst(.sys_clk ( sys_clk ) ,.sys_rst_n ( sys_rst_n ) ,.led_out ( led_out )
);parameter CYCLE = 20 ;defparam led_inst.MAX_CNT500MS = 25 ;initial beginsys_clk = 1'b1 ;sys_rst_n <= 1'b0 ;#(CYCLE * 5 ) ;sys_rst_n <= 1'b1 ;endalways #(CYCLE / 2) sys_clk = ~sys_clk ;endmodule