• io测试【FPGA】


    io控制是刚入门的基础,必须熟练掌握。 

    1. // io_defines.v
    2. `ifndef _IO_DEFINES_V // `include "io_defines.v" //""表示用户文件,不区分大小写,<>是库文件
    3. `define _IO_DEFINES_V
    4. `define sysclk FPGA_CLK_50M_B5 // 编译的时候,只做替换 [`sysclk]
    5. `define reset RESET_E8
    6. //==========
    7. `define key1 KEY1_K18
    8. `define key2 KEY2_N17
    9. `define key3 KEY3_N18
    10. `define key4 KEY4_H17
    11. //==========
    12. `define led1 LED1_D15
    13. `define led2 LED2_C15
    14. `define led3 LED3_A12
    15. `define led4 LED4_B12
    16. `define beep BEEP_H13
    17. //=============
    18. `define spi_cs SPI_CS_B8
    19. `define spi_clk SPI_CLK_C9
    20. `define spi_io0 SPI_IO0_B4
    21. `define spi_io1 SPI_IO1_A4
    22. `define spi_io2 SPI_IO2_B3
    23. `define spi_io3 SPI_IO3_A3
    24. //=============
    25. `define i2c_scl I2C_SCL_D13
    26. `define i2c_sda I2C_SDA_C13
    27. //==============
    28. `define uart1_rx UART1_RX_A15
    29. `define uart1_tx UART1_TX_B15
    30. //=============
    31. // `define
    32. // `define
    33. // `define
    34. // `define
    35. // `define

     

     `ifndef _IO_DEFINES_V    //  `include "io_defines.v" //""表示用户文件,不区分大小写,<>是库文件
    `define _IO_DEFINES_V

    1. //======================================================
    2. module io_def // 模块名字,参数,方法体
    3. (
    4. input FPGA_CLK_50M_b5,
    5. input key1_k18,
    6. input key2_n17,
    7. input key3_n18,
    8. input key4_h17,
    9. //
    10. output led1_d15,
    11. output led2_c15,
    12. output led3_a12,
    13. output led4_b12,
    14. output beep_h13 //【注】最后一个参数不加逗号
    15. );
    16. assign {led1_d15,led2_c15,led3_a12,led4_b12} = {~key1_k18,~key2_n17,~key3_n18,~key4_h17}; //key1_k18 +key2_n17 + key3_n18 +key4_h17 ;
    17. endmodule

    按钮:

    按钮是区分输入输出的,

    LED配置成输入,是不会亮的。

    1. //`timescale 1s/1ns // 【`】是预编译,类似C语言的#include // 这是FPGA原语 //晶振时钟 1ns
    2. //======类型声明============
    3. module LED //跟PLC的FB功能块一样,使用前需要实例化,注:不支持中文
    4. #(
    5. // 参数变量表
    6. parameter num1 = 8'b0001_0001 , //二进制 0x11
    7. parameter num2 = 32'o123456 , //八进制 8#123456
    8. parameter num3 = 32'd19890722 , //十进制 10#19890722
    9. parameter num4 = 64'h00ff_00ff //【最后一个不要加逗号,】 // 十六进制 0x00ff00ff // 16#00FF00FF
    10. )
    11. (
    12. // io变量表
    13. //晶振 b5 FPGA_CLK_50M
    14. //beep h13
    15. //key1 k18
    16. //key2 n17
    17. //key3 n18
    18. //key4 h17
    19. //led1 d15
    20. //led2 c15
    21. //led3 a12
    22. //led4 b12
    23. input wire KEY1_k18 , // bool
    24. input wire KEY2_n17 , // bool
    25. input wire KEY3_n18 , // bool
    26. input wire KEY4_h17 , // bool
    27. output wire LED1_d15 , // bool
    28. output wire LED2_c15 , // bool
    29. output wire LED3_a12 , // bool
    30. output wire LED4_b12 , // bool
    31. input mark //【最后一个不要加逗号,】
    32. );
    33. assign LED1_d15 =~KEY1_k18 ;
    34. assign LED2_c15 =~KEY1_k18 ;
    35. assign LED3_a12 =~KEY1_k18 ;
    36. assign LED4_b12 =~KEY1_k18 ;
    37. endmodule

    assign是逻辑门输出。不会受晶振时钟影响。

    调用功能块,测试:

    1. `timescale 1s/1ns // 【`】是预编译,类似C语言的#include // 这是FPGA原语 //晶振时钟 1ns
    2. //======类型声明============
    3. module tb_LED(); //跟PLC的FB功能块一样,使用前需要实例化,注:不支持中文
    4. LED ledtest
    5. (
    6. // io变量表
    7. //晶振 b5 FPGA_CLK_50M
    8. //beep h13
    9. //led1 d15
    10. //led2 c15
    11. //led3 a12
    12. //led4 b12
    13. //key1 k18
    14. //key2 n17
    15. //key3 n18
    16. //key4 h17
    17. );
    18. endmodule

    实际就是   LED   ledtest();   // 实例化 LED这个类型。

  • 相关阅读:
    react-antd组件 input输入框: 实现按回车搜索
    传智健康产品需求说明书
    ElasticSearch7.3学习(十一)----定制分词器(Analyzer)
    【微电网】具有柔性结构的孤岛直流微电网的分级控制(Malab代码实现)
    《算法设计与分析》教学上机实验报告
    React Native将 ipad 端软件设置为横屏显示后关闭 Modal 弹窗报错
    Day10--初始化uni-app项目
    Linux使用ifconfig命令没有显示ens33或者没有ip地址
    JavaEE之Cookie 和 Session 的工作流程
    S7-200SMART通过循环移位实现MODBUS RTU轮询的具体方法示例
  • 原文地址:https://blog.csdn.net/cfqq1989/article/details/134071689