//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写的串口转并口程序相关推荐

  1. linux串口tx缓冲区大小,[Linux C]自己写的串口缓冲区

    #include/* 缓冲区大小 */ #define SERIAL_BUFFER_SIZE 250 /* 错误代码:取负值是为了与正常数值区别开来 */ #define CODE_SUCCESS - ...

  2. qt 串口粘包_用Qt 5写一个串口收发桌面工具

    今天用Qt写了一个串口收发工具,记录下整个流程. 1.项目工程布局 2.ui文件布局 3.widget.h文件 #ifndef WIDGET_H #define WIDGET_H #include # ...

  3. 用c语言编写心里测试,写了个心理测试的c程序(*^__^*) 嘻嘻……

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 代码如下 #include int main() { int a; printf(" \n 请按照下列指示诊断你的性格吧!\n \n有一天在路上 ...

  4. 串口测试软件发指令给s7-200,S7-200CPU的通信口自由口设置

    原标题:S7-200CPU的通信口自由口设置 西门子S7-200CPU的通信口可以设置为自由口模式.选择自由口模式后,用户程序就可以完全控制通信端口的操作,通信协议也完全受用户程序控制. S7-200 ...

  5. 吃透Chisel语言.01.大家Verilog和VHDL用得好好的,为什么要整个Chisel语言出来?

    大家Verilog和VHDL用得好好的,为什么要整个Chisel语言出来??? 说到数字芯片或微处理器的设计实现,你首先想到的语言是什么?可能会是Verilog和VHDL这种早在上世纪八十年代就开发出 ...

  6. hdl语言哪种语言类似c,Verilog HDL笔记

    <设计与验证 Verilog HDL> 设计与验证的发展历程 早期:卡诺图设计,面包板验证 中期:原理图设计,EDA工具仿真验证 后期:硬件描述语言HDL设计,EDA工具仿真验证 抽象层次 ...

  7. HDL的综合和c语言的编译区别,Verilog HDL与C语言的比较

    Verilog HDL是在C语言的基础上发展起来的,因而它保留了C语言所独有的结构特点. 为便于对Verilog HDL有个大致的认识,在这里将它与C语言的异同作一比较: 1.C语言是由函数组成的,而 ...

  8. Verilog初级教程(1)认识 Verilog HDL

    文章目录 背景 正文介绍 Verilog有什么用途? 如何验证Verilog设计的功能? Verilog设计模板 参考资料汇总 背景 集成电路的设计经历了从原理图绘制(工程师在纸上绘制晶体管及其连接, ...

  9. 【 Verilog HDL 】不同抽象级别的Verilog HDL模型之门级结构描述

    本博文参考:<从算法设计到硬件逻辑实现>,仅供学习交流使用. Verilog模型可以是实际电路不同级别的抽象.这些抽象的级别和它们对应的模型类型共有以下五种: 1) 系统级(system) ...

最新文章

  1. ARC中的三个关键字
  2. opengl用什么软件写_汇才论文工具分享:写科研论文的都在用这些截图软件
  3. 修正IE6重复文字bug
  4. 子类既要实现接口又要继承抽象类的一个demo
  5. Ground Defense 模拟
  6. Android框架揭秘电子书pdf下载
  7. 基于java语言的C/S模式网络聊天室软件
  8. 【POJ 1838 --- Banana】
  9. python常用的编程软件_mPython(图形化编程软件)
  10. 锁仓怎么解_期货锁仓后如何解锁?
  11. T - 地狱之门 (URAL - 1036 )
  12. 有道云笔记云端图片炸裂、无法显示及同步问题
  13. iOS : 通过路径读取文件的几种方法
  14. BAT批处理基本命令
  15. eclipse改变背景颜色及背景图片
  16. 电力电子技术总结-电力电子器件2
  17. UnityGUI简介
  18. 非走不可的弯路[张爱玲]
  19. 二见钟情——设计模式
  20. 深入理解Redis Cluster和Jedis Cluster

热门文章

  1. Jest+Enzyme测试React组件(上)
  2. 中国大型舞剧《大梦敦煌》惊艳狮城
  3. iOS:触摸事件、手势识别、摇晃事件、耳机线控
  4. android酷管家初始密码,酷派大神要酷管家密码才能恢复出厂设置
  5. chrome浏览器主页被hao123劫持、篡改了怎么办
  6. win10系统64位安装python什么版本_如何在win10中安装Python
  7. 【多服务场景化解决方案】智能家居(UrbanHome)
  8. 快速幂+矩阵快速幂模板
  9. TypeScript中接口和抽象类
  10. Tails 警告用户不要使用 Tor 浏览器