io测试【FPGA】

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

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

`define sysclk   FPGA_CLK_50M_B5  // 编译的时候,只做替换 [`sysclk]
`define reset	 RESET_E8

//==========
`define key1	 KEY1_K18
`define key2	 KEY2_N17
`define key3	 KEY3_N18
`define key4	 KEY4_H17
//==========
`define led1	 LED1_D15
`define led2	 LED2_C15
`define led3	 LED3_A12
`define led4	 LED4_B12
`define beep	 BEEP_H13
//=============
`define spi_cs	 SPI_CS_B8
`define spi_clk	 SPI_CLK_C9
`define spi_io0	 SPI_IO0_B4
`define spi_io1	 SPI_IO1_A4
`define spi_io2	 SPI_IO2_B3
`define spi_io3	 SPI_IO3_A3
//=============
`define i2c_scl	 I2C_SCL_D13
`define i2c_sda	 I2C_SDA_C13
//==============
`define uart1_rx	 UART1_RX_A15
`define uart1_tx	 UART1_TX_B15
//=============
// `define 
// `define 
// `define 
// `define 
// `define 

 

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

//======================================================
module io_def    // 模块名字,参数,方法体
(
    input FPGA_CLK_50M_b5,
    input key1_k18,
    input key2_n17,
    input key3_n18,
    input key4_h17,
//
    output led1_d15,
    output led2_c15,
    output led3_a12,
    output led4_b12,

output beep_h13   //【注】最后一个参数不加逗号
);

    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 ;

            
endmodule

按钮:

按钮是区分输入输出的,

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

//`timescale  1s/1ns // 【`】是预编译,类似C语言的#include // 这是FPGA原语 //晶振时钟 1ns

//======类型声明============
module LED   //跟PLC的FB功能块一样,使用前需要实例化,注:不支持中文
#( 
    // 参数变量表
   parameter num1 = 8'b0001_0001 , //二进制 0x11
   parameter num2 = 32'o123456 , //八进制  8#123456
   parameter num3 = 32'd19890722 , //十进制  10#19890722
   parameter num4 = 64'h00ff_00ff  //【最后一个不要加逗号,】 // 十六进制 0x00ff00ff  // 16#00FF00FF
 ) 

(
    // io变量表
//晶振    b5    FPGA_CLK_50M
//beep    h13
//key1    k18
//key2    n17
//key3    n18
//key4    h17
//led1    d15
//led2    c15
//led3    a12
//led4    b12

    input wire KEY1_k18 , // bool
    input wire KEY2_n17 , // bool
    input wire KEY3_n18 , // bool
    input wire KEY4_h17 , // bool

    output wire LED1_d15 , // bool
    output wire LED2_c15 , // bool
    output wire LED3_a12 , // bool
    output wire LED4_b12 , // bool

input mark    //【最后一个不要加逗号,】 
); 

assign   LED1_d15 =~KEY1_k18 ;
assign   LED2_c15 =~KEY1_k18 ;
assign   LED3_a12 =~KEY1_k18 ;
assign   LED4_b12 =~KEY1_k18 ;


endmodule

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

调用功能块,测试:

`timescale  1s/1ns // 【`】是预编译,类似C语言的#include // 这是FPGA原语 //晶振时钟 1ns

//======类型声明============
module tb_LED();   //跟PLC的FB功能块一样,使用前需要实例化,注:不支持中文



LED ledtest

(
    // io变量表
//晶振    b5    FPGA_CLK_50M
//beep    h13
//led1    d15
//led2    c15
//led3    a12
//led4    b12
//key1    k18
//key2    n17
//key3    n18
//key4    h17
 

); 


endmodule

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值