Verilog HDL串口发送程序
2020-07-14 05:46
120 查看
module myuart_trans( input clk, input rst, input TransEn, //transmit able input[7:0] DataToTrans, //Data prepared for transmitting output reg BufFull, //Data buffer is full output reg tx, //serial data out output reg gnd=1'b0 ); //对50MHz晶振进行分频,3.125MHz reg[7:0] count; reg clk16x; always@(posedge clk or posedge rst) if(rst) begin count<=8'd0; clk16x=1'b0; end else if(count>=8'd125) begin count<=1'b0; clk16x=~clk16x; end else count<=count+1'b1; //capture the falling edge of TransEn reg TransEn_r; wire pos_tri; always@(posedge clk16x or posedge rst) if(rst) TransEn_r <= 1'b0; else TransEn_r <= TransEn; assign pos_tri = TransEn_r & ~TransEn; // when the falling edge of TransEn,load the Data to buffer reg[7:0] ShiftReg; always@(negedge pos_tri or posedge rst) if(rst) ShiftReg <= 8'b0; else ShiftReg <= DataToTrans; //counter control reg cnt_en; always@(posedge clk16x or posedge rst) if(rst) begin cnt_en <= 1'b0; BufFull <= 1'b0; end else if(pos_tri==1'b1) begin cnt_en <= 1'b1; BufFull <= 1'b1; end else if(cnt==168) begin cnt_en <= 1'b0; BufFull <= 1'b0; end //counter module reg[7:0] cnt; always@(posedge clk16x or posedge rst) if(rst) cnt <= 8'd0; else if(cnt_en) cnt <= cnt+1'b1; else cnt <= 8'd0; //transmit module always@(posedge clk16x or posedge rst) if(rst) tx <= 1'b1; else if(cnt_en) case(cnt) 8'd8: tx <= 1'b0; 8'd24: tx <= ShiftReg[0]; 8'd40: tx <= ShiftReg[1]; 8'd56: tx <= ShiftReg[2]; 8'd72: tx <= ShiftReg[3]; 8'd88: tx <= ShiftReg[4]; 8'd104: tx <= ShiftReg[5]; 8'd120: tx <= ShiftReg[6]; 8'd136: tx <= ShiftReg[7]; 8'd152: tx <= 1'b1; endcase else tx <= 1'b1; endmodule
转载于:https://www.cnblogs.com/Mungbohne/p/4376427.html
相关文章推荐
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--串口发送|接收 封装(十九)
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--串口发送|接收 封装(十九)
- STC15 串口一 接收 发送 基本程序
- 【FPGA黑金开发板】Verilog HDL那些事儿--串口模块(十一)
- 两种方法实现STM32F103向串口一直发送数据(程序源码,已测试)
- STC89C52单片机——串口发送程序1
- verilog语言RS232串口接收模块设计——串口调试工具发送数据在数码管显示
- [转载]串口Xmodem协议的msp430发送数据程序
- 单片机串口发送和接受程序
- 【FPGA黑金开发板】Verilog HDL那些事儿--串口模块(十一)
- 0--我的串口发送"hello word"程序
- Delphi 使用 SPcomm 调试串口程序出现总是在程序断开的时候,才发送指令的问题。
- MFC串口通信设置及发送、中断接收程序
- QT串口程序已16进制接受和发送数据
- 串行接口(UART)------verilog实现串口发送模块
- ht46ru232 串口接收、发送程序 C语言
- 用Verilog写一个串口接收程序
- Verilog HDL程序基础——计算机组成原理实验
- ATMEGA16串口发送和中断接收CVAVR程序
- EEPROM的verilog HDL程序