verilog串口没有C语言灵活,用verilog写的串口转并口程序
//PS:由于串口每贞发10bit,所以500k的波特率每秒只发50k个字节(一字节=8bit)
//PS:当counter_1相关数据为217,counter_3相关数据为434时,波特率为115200
//PS:
当counter_1相关数据为100,counter_3相关数据为200时,波特率为250K
module uart_rxd
(rxd,ben_zhen,out_data,int0);//本程序的接收波特率由时钟频率和counter_1及counter_3共同决定,算法见下
input
rxd,ben_zhen;//输入频率的时钟,本例为50Mhz,本例的接收波特率为500k
output[7:0]out_data;//串口数据并行输出
output int0;//串口数据接收中断输出
reg[7:0]out_data;
reg[3:0]counter_2;
reg[8:0]counter_1,counter_3;
reg uart_start;
reg biaozhi;
reg int0;
always @(negedge rxd or negedge biaozhi)
begin
if(rxd==0)
uart_start=1;
else uart_start=0;
end
always @(posedge ben_zhen)
//begin
//if(rxd==0) uart_start=1;
//else
begin
biaozhi=1; //要更改接收波特率,请按说明修改下面这三行的数据:
if((uart_start)&&(counter_1<217))begin
counter_1=counter_1+1;int0=1;end//counter_1取时钟频率除以波特率再除以2,counter_1的作用是保证串口起始位的延时时间
else
if((uart_start)&&(counter_1==217)&&(counter_3<434))
counter_3=counter_3+1;//counter_3取时钟频率除以波特率
else
if((uart_start)&&(counter_1==217)&&(counter_3==434))
begin
case(counter_2)
4'd0:out_data[0]=rxd;
4'd1:out_data[1]=rxd;
4'd2:out_data[2]=rxd;
4'd3:out_data[3]=rxd;
4'd4:out_data[4]=rxd;
4'd5:out_data[5]=rxd;
4'd6:out_data[6]=rxd;
4'd7:out_data[7]=rxd;
4'd8:begin if(!rxd)out_data=8'hff;else
biaozhi=0;counter_1=0;counter_2=0;int0=0;end
//default:;
endcase
counter_2=counter_2+1;
counter_3=0;
end
else begin counter_1=0;counter_2=0;counter_3=0;
end//防止非串口信号的误低电平信号
end
//end
endmodule
verilog串口没有C语言灵活,用verilog写的串口转并口程序相关推荐
- linux串口tx缓冲区大小,[Linux C]自己写的串口缓冲区
#include/* 缓冲区大小 */ #define SERIAL_BUFFER_SIZE 250 /* 错误代码:取负值是为了与正常数值区别开来 */ #define CODE_SUCCESS - ...
- qt 串口粘包_用Qt 5写一个串口收发桌面工具
今天用Qt写了一个串口收发工具,记录下整个流程. 1.项目工程布局 2.ui文件布局 3.widget.h文件 #ifndef WIDGET_H #define WIDGET_H #include # ...
- 用c语言编写心里测试,写了个心理测试的c程序(*^__^*) 嘻嘻……
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下 #include int main() { int a; printf(" \n 请按照下列指示诊断你的性格吧!\n \n有一天在路上 ...
- 串口测试软件发指令给s7-200,S7-200CPU的通信口自由口设置
原标题:S7-200CPU的通信口自由口设置 西门子S7-200CPU的通信口可以设置为自由口模式.选择自由口模式后,用户程序就可以完全控制通信端口的操作,通信协议也完全受用户程序控制. S7-200 ...
- 吃透Chisel语言.01.大家Verilog和VHDL用得好好的,为什么要整个Chisel语言出来?
大家Verilog和VHDL用得好好的,为什么要整个Chisel语言出来??? 说到数字芯片或微处理器的设计实现,你首先想到的语言是什么?可能会是Verilog和VHDL这种早在上世纪八十年代就开发出 ...
- hdl语言哪种语言类似c,Verilog HDL笔记
<设计与验证 Verilog HDL> 设计与验证的发展历程 早期:卡诺图设计,面包板验证 中期:原理图设计,EDA工具仿真验证 后期:硬件描述语言HDL设计,EDA工具仿真验证 抽象层次 ...
- HDL的综合和c语言的编译区别,Verilog HDL与C语言的比较
Verilog HDL是在C语言的基础上发展起来的,因而它保留了C语言所独有的结构特点. 为便于对Verilog HDL有个大致的认识,在这里将它与C语言的异同作一比较: 1.C语言是由函数组成的,而 ...
- Verilog初级教程(1)认识 Verilog HDL
文章目录 背景 正文介绍 Verilog有什么用途? 如何验证Verilog设计的功能? Verilog设计模板 参考资料汇总 背景 集成电路的设计经历了从原理图绘制(工程师在纸上绘制晶体管及其连接, ...
- 【 Verilog HDL 】不同抽象级别的Verilog HDL模型之门级结构描述
本博文参考:<从算法设计到硬件逻辑实现>,仅供学习交流使用. Verilog模型可以是实际电路不同级别的抽象.这些抽象的级别和它们对应的模型类型共有以下五种: 1) 系统级(system) ...
最新文章
- ARC中的三个关键字
- opengl用什么软件写_汇才论文工具分享:写科研论文的都在用这些截图软件
- 修正IE6重复文字bug
- 子类既要实现接口又要继承抽象类的一个demo
- Ground Defense 模拟
- Android框架揭秘电子书pdf下载
- 基于java语言的C/S模式网络聊天室软件
- 【POJ 1838 --- Banana】
- python常用的编程软件_mPython(图形化编程软件)
- 锁仓怎么解_期货锁仓后如何解锁?
- T - 地狱之门 (URAL - 1036 )
- 有道云笔记云端图片炸裂、无法显示及同步问题
- iOS : 通过路径读取文件的几种方法
- BAT批处理基本命令
- eclipse改变背景颜色及背景图片
- 电力电子技术总结-电力电子器件2
- UnityGUI简介
- 非走不可的弯路[张爱玲]
- 二见钟情——设计模式
- 深入理解Redis Cluster和Jedis Cluster