• ZYNQ_project:led


    本次实验完成:led流水间隔0.5s

    闪烁间隔0.25s。

    名词解释:

    analysis分析:对源文件进行全面的语法检查。

    synthesis综合:综合的过程是由 FPGA 综合工具箱 HDL 原理图或其他形式源文件进行分析,进而推演出由 FPGA 芯片中底层基本单元表示的电路网表的过程。通俗的讲就是将自己的设计映射到 FPGA 中。

    Implementation设计实现:加入一些约束文件。然后可以进行后仿真。

    bitstream生成bit流文件:下载进开发板。

    时序图:

    代码:

    分为流水与闪烁。

    1. // led闪烁实验,间隔0.25s
    2. module led(
    3. input wire sys_clk ,
    4. input wire sys_rst_n ,
    5. output reg [1:0] led_out
    6. );
    7. parameter MAX_CNT25MS = 1_250_0000 ;
    8. reg [23:0] cnt_25ms ;
    9. wire cnt_25ms_flag ;
    10. always @(posedge sys_clk or negedge sys_rst_n) begin
    11. if(~sys_rst_n)
    12. cnt_25ms <= 24'd0 ;
    13. else if(cnt_25ms == MAX_CNT25MS - 1)
    14. cnt_25ms <= 24'd0 ;
    15. else
    16. cnt_25ms <= cnt_25ms + 1'b1 ;
    17. end
    18. assign cnt_25ms_flag = (cnt_25ms == MAX_CNT25MS - 1) ;
    19. // led_out
    20. always @(posedge sys_clk or negedge sys_rst_n) begin
    21. if(~sys_rst_n)
    22. led_out <= 2'd0 ;
    23. else if(cnt_25ms_flag)
    24. led_out <= ~led_out ;
    25. end
    26. endmodule

    1. // 流水
    2. module led(
    3. input wire sys_clk ,
    4. input wire sys_rst_n ,
    5. output reg [1:0] led_out
    6. );
    7. parameter MAX_CNT500MS = 25_000_000 ; // 0.5s 5000_0000 1s
    8. reg [25:0] cnt_1s ;
    9. // reg [25:0] cnt_1s
    10. always @(posedge sys_clk or negedge sys_rst_n) begin // �첽��λ����Ϊ���������¼���
    11. if(!sys_rst_n)
    12. cnt_1s <= 26'd0 ;
    13. else if(cnt_1s == MAX_CNT500MS - 1)
    14. cnt_1s <= 26'd0 ;
    15. else
    16. cnt_1s <= cnt_1s + 1'b1 ;
    17. end
    18. // reg [1:0] led_out
    19. always @(posedge sys_clk or negedge sys_rst_n) begin
    20. if(!sys_rst_n)
    21. led_out <= 2'b01 ;
    22. else if(cnt_1s == MAX_CNT500MS - 1)
    23. led_out <= ~led_out ;
    24. else
    25. led_out <= led_out ;
    26. end
    27. ila_0 your_instance_name (
    28. .clk ( sys_clk ) , // input wire clk
    29. .probe0 ( led_out ) , // input wire [1:0] probe0
    30. .probe1 ( cnt_1s ) // input wire [25:0] probe1
    31. );
    32. endmodule

     仿真代码:

    1. `timescale 1ns/1ns
    2. module test_led();
    3. reg sys_clk ;
    4. reg sys_rst_n ;
    5. wire [1:0] led_out ;
    6. led led_inst(
    7. .sys_clk ( sys_clk ) ,
    8. .sys_rst_n ( sys_rst_n ) ,
    9. .led_out ( led_out )
    10. );
    11. parameter CYCLE = 20 ;
    12. defparam led_inst.MAX_CNT500MS = 25 ;
    13. initial begin
    14. sys_clk = 1'b1 ;
    15. sys_rst_n <= 1'b0 ;
    16. #(CYCLE * 5 ) ;
    17. sys_rst_n <= 1'b1 ;
    18. end
    19. always #(CYCLE / 2) sys_clk = ~sys_clk ;
    20. endmodule

  • 相关阅读:
    好奇!为什么gateway和springMVC之间依赖冲突?
    CSDN竞赛4期题解
    Android GKI 架构简介
    Office 2021 小型企业版商用办公软件评测:提升工作效率与协作能力的专业利器
    Hive 剖析
    Apache Calcite - 自定义标量函数
    第11/100天 阅读笔记
    uniapp-vue3 项目初始化集成配置【开箱即用】
    聚观早报 |GPT-4周活用户数达1亿;长城汽车10月销量增加
    ansible实操入门
  • 原文地址:https://blog.csdn.net/Meng_long2022/article/details/134250162