本次实验完成: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_0000 ;
-
- reg [23:0] cnt_25ms ;
- wire cnt_25ms_flag ;
- always @(posedge sys_clk or negedge sys_rst_n) begin
- if(~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 ;
- end
- assign cnt_25ms_flag = (cnt_25ms == MAX_CNT25MS - 1) ;
- // led_out
- always @(posedge sys_clk or negedge sys_rst_n) begin
- if(~sys_rst_n)
- led_out <= 2'd0 ;
- else if(cnt_25ms_flag)
- led_out <= ~led_out ;
- end
-
- endmodule
- // 流水
- 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 1s
-
- reg [25:0] cnt_1s ;
- // reg [25:0] cnt_1s
- always @(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) begin
- if(!sys_rst_n)
- led_out <= 2'b01 ;
- else if(cnt_1s == MAX_CNT500MS - 1)
- led_out <= ~led_out ;
- else
- led_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 begin
- sys_clk = 1'b1 ;
- sys_rst_n <= 1'b0 ;
- #(CYCLE * 5 ) ;
- sys_rst_n <= 1'b1 ;
- end
- always #(CYCLE / 2) sys_clk = ~sys_clk ;
- endmodule