串口通信控制模块发送端Verilog代码Quartus DE2-115开发板

名称:串口通信控制模块发送端Verilog代码Quartus  DE2-115开发板(文末获取)

软件:Quartus

语言:Verilog

代码功能:

串口通信控制模块发送端

编写波特率可设置的串口通信控制程序,使得发送端(通过FPGA的四个拨码开关发送

0~15内的整数),接收端(在PC上通过串口调试助手进行显示)观察数据是否与发送端一样。

要求.jpg

本代码已在DE2-115开发板验证,DE2-115开发板如下,其他开发板可以修改管脚适配:

DE2-115开发板.png

演示视频:

设计文档:

设计文档.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. 管脚分配

5. Testbench

6. 仿真图

部分代码展示:

//UART发送端
module uart_send(
    input      clock,                  //系统时钟
    input         reset,                //系统复位,低电平有效
    input         write_strobe,                  //发送使能信号
    input  [3:0]  data_in,                 //待发送数据
output        transmitinf,                //表示这种发送
    output  reg   s_out                  //UART发送端口
    );
    
//parameter define
parameter  CLK_FREQ = 50000000;             //系统时钟频率
parameter  UART_BPS = 9600;                 //串口波特率
localparam BPS_CNT  = CLK_FREQ/UART_BPS;    //为得到指定波特率,对系统时钟计数BPS_CNT次
//reg define
reg        uart_en_d0; 
reg        uart_en_d1;  
reg [15:0] clk_cnt;                         //系统时钟计数器
reg [ 3:0] tx_cnt;                          //发送数据计数器
reg        tx_flag;                         //发送过程标志信号
reg [ 7:0] tx_data;                         //寄存发送数据
//wire define
wire       en_flag;
assign transmitinf=tx_flag;
//*****************************************************
//**                    main code
//*****************************************************
//捕获uart_en上升沿,得到一个时钟周期的脉冲信号
assign en_flag = (uart_en_d1) & (~uart_en_d0);
                                                 
//对发送使能信号uart_en延迟两个时钟周期
always @(posedge clock or negedge reset) begin         
    if (!reset) begin
        uart_en_d0 <= 1'b0;                                  
        uart_en_d1 <= 1'b0;
    end                                                      
    else begin                                               
        uart_en_d0 <= write_strobe;                               
        uart_en_d1 <= uart_en_d0;                            
    end
end
//当脉冲信号en_flag到达时,寄存待发送的数据,并进入发送过程          
always @(posedge clock or negedge reset) begin         
    if (!reset) begin                                  
        tx_flag <= 1'b0;
        tx_data <= 8'd0;
    end 
    else if (en_flag) begin                 //检测到发送使能上升沿                      
            tx_flag <= 1'b1;                //进入发送过程,标志位tx_flag拉高
            tx_data <= {4'b0000,data_in};            //寄存待发送的数据,前4bit补0
        end
        else 
        if ((tx_cnt == 4'd10)&&(clk_cnt == BPS_CNT/2))
        begin                               //计数到停止位中间时,停止发送过程
            tx_flag <= 1'b0;                //发送过程结束,标志位tx_flag拉低
            tx_data <= 8'd0;
        end
        else begin
            tx_flag <= tx_flag;
            tx_data <= tx_data;
        end
源代码

点击下方的公众号卡片获取

de2-115开发板是一款由Altera公司推出的基于Cyclone IV系列FPGA芯片的开发板。它是一款功能丰富且灵活扩展的开发平台,适用于各种嵌入式系统的设计与开发。 首先,de2-115开发板提供了丰富的硬件资源。它内置了一个Cyclone IV EP4CE115F29芯片,拥有115,200逻辑单元(LE)和6,981kbit的存储器单元(M9K)。这使得开发者能够实现复杂的逻辑功能和存储需求。同时,开发板上还提供了8MB的SDRAM和4MB的Flash存储器作为外部存储,方便用户存储和加载程序。 其次,de2-115开发板具有丰富的输入输出接口。它包含了许多常用的接口和组件,如USB接口、SD卡插槽、VGA接口和音频接口等。这些接口使得开发者可以方便地与外部设备进行数据交互,进一步扩展了开发板的应用范围。 另外,de2-115开发板还配备了许多实用的外设。包括16个开关、16个LED灯和9个七段数码管,方便用户进行输入和输出的交互。此外,开发板还提供了4个脉冲宽度调制(PWM)输出通道和4个可编程时钟信号源,以满足不同的应用需求。 最后,de2-115开发板还支持多种开发软件和编程语言。开发者可以使用Altera的Quartus II软件进行开发,并可选择使用Verilog HDL或VHDL等编程语言。这样,开发者可以根据自己的喜好及项目需求,进行灵活的开发和设计。 综上所述,de2-115开发板具有强大的硬件资源、丰富的输入输出接口、实用的外设和支持多种开发软件和编程语言等特点。它是一款功能丰富、易于扩展和使用的嵌入式系统开发平台,适合各种项目的设计与开发
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值