uart串口发送和接收字符串设计Verilog代码Quartus仿真
名称:uart串口发送和接收字符串设计Verilog代码Quartus仿真
软件:Quartus
语言:Verilog
代码功能:
uart串口发送和接收字符串
仿真发送字符串“from my rsic-v soc uart !!!!!!”
1、工程文件

编辑
2、程序文件

编辑
3、Testbench

编辑
4、仿真图

编辑
部分代码展示:
//UART接收端 module uart_recv( input sys_clk, //系统时钟 input sys_rst_n, //系统复位,低电平有效 input uart_rxd, //UART接收端口 output reg uart_done, //接收一帧数据完成标志信号 output reg [7:0] uart_data //接收的数据 ); //parameter define parameter CLK_FREQ = 50000000; //系统时钟频率 parameter UART_BPS = 9600; //串口波特率 localparam BPS_CNT = CLK_FREQ/UART_BPS; //为得到指定波特率, //需要对系统时钟计数BPS_CNT次 //reg define reg uart_rxd_d0; reg uart_rxd_d1; reg [15:0] clk_cnt; //系统时钟计数器 reg [ 3:0] rx_cnt; //接收数据计数器 reg rx_flag; //接收过程标志信号 reg [ 7:0] rxdata; //接收数据寄存器 //wire define wire start_flag; //***************************************************** //** main code //***************************************************** //捕获接收端口下降沿(起始位),得到一个时钟周期的脉冲信号 assign start_flag = uart_rxd_d1 & (~uart_rxd_d0); //对UART接收端口的数据延迟两个时钟周期 always @(posedge sys_clk or negedge sys_rst_n) begin if (!sys_rst_n) begin uart_rxd_d0 <= 1'b0; uart_rxd_d1 <= 1'b0; end else begin uart_rxd_d0 <= uart_rxd; uart_rxd_d1 <= uart_rxd_d0; end end //当脉冲信号start_flag到达时,进入接收过程 always @(posedge sys_clk or negedge sys_rst_n) begin if (!sys_rst_n) rx_flag <= 1'b0; else begin if(start_flag) //检测到起始位 rx_flag <= 1'b1; //进入接收过程,标志位rx_flag拉高 else if((rx_cnt == 4'd9)&&(clk_cnt == BPS_CNT/2)) rx_flag <= 1'b0; //计数到停止位中间时,停止接收过程 else rx_flag <= rx_flag; end end
代码文件(付费下载):
![]()
1、代码文件需要付费后才可见。
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » uart串口发送和接收字符串设计Verilog代码Quartus仿真
2、支付问题请联系微信公众号客服。
3、优质Verilog/VHDL代码资源,所见即所得。
Verilog/VHDL资源下载 » uart串口发送和接收字符串设计Verilog代码Quartus仿真
发表评论
模板文件不存在: ./template/plugins/comment/pc/index.htm