异步串行接口电路及通信系统设计设计报告2009级可编程逻辑课程名称: 实验题目:学生姓名: YC 开课学院: Bio开课时间: 2011课程设计可编程逻辑设计异步串行接口电路及通信系统设计、SXL、ZY、YLJ、WJ 学院至2012学年第二学期重庆大学本科学生课程设计指导教师评定成绩表学院年级学生姓名课程设计题目be学院2009级指导教师专业Zxm. Wxp. BME YC、SXL、ZY、YLJ、WJ 异步串行接口电路及通信系统设计指导教师评语课程设计成绩指导教师签名:年月日重庆大学本科学生课程设计任务书课程设计题目学院BE学院异步串行接口电路及通信系统设计专业BME 年级、班09 BME 01、02班设计要求:设计一个能进行异步全双工串行通信的模块,该模块以固定的串行数据传送格式收发数据。
1)每帧数据供10 位,其中1位启动位,8位数据位,1位停止位。
2)波特率为:9600。
3)收发误码率摘要摘要通用串口是远程通信接口,在数字系统使用很普遍,是一个很重要的部件。
本论文使用VHDL语言描述硬件功能,并适当借助Verilog HDL 语言,利用在FPGA 芯片上的综合描述,采用模块化设计方法设计UART的各个模块。
其中包括波特率发生器,程序控制器,UART数据接收器和UART数据发送器,采用的外部时钟为50MHZ,波特率为9600。
在QuartusII 环境下进行设计、编译和仿真。
最后的程序编译仿真结果及硬件测试结果表明系统设计完全正确。
关键字:VHDL; Verilog HDL;UART; 帧格式; FPGA;异步通信I 摘要Abstract In this paper, the use ofhardware description languages VHDL function, the Verilog HDL language ,the use of Altera’s FPGA chips, the design of modular design method of UART (Universal Asynchronous Receiver Transmitter) of each module, including Porter, generators, process controllers, UART receiver data and the UART transmitter data. QuartusII and in environment design, compilation, simulation and downloading. Finally, simulation results show that the procedures for compiling data entirely correct. Key words: VHDL; VerilogHDL; UART; frame format; FPGA; Asynchronous Communication II目录目录一、课题设计概述及原理??????????????????????????1 设计目的???????????????????????????????1 设计要求???????????????????????????????1 设计内容???????????????????????????????1 设计原理???????????????????????????????1 串行通信的基本概念????????????????????????1数据传输方式????????????????????????1 波特率????????????????????????????2 误码率????????????????????????????2 串行通信的基本方式??????????????????????2 异步串行通信标准接口???????????????????????2 异步通信的控制时钟????????????????????????3 全双工串行通信模块UART ?????????????????????4 二、系统设计方案??????????????????????????????6 顶层逻辑设计图???????????????????????????6 设计说明??????????????????????????????6单元程序设计及仿真分析???????????????????????7 三、单元程序设计及仿真分析?????????????????????????7 系统时钟50分频???????????????????????????8 1MHz时钟1M分频???????????????????????????8 波特率产生模块????????????????????????????9 地址寻址模块电路图?????????????????????????10 数据接收模块????????????????????????????11 数据发送模块电路图?????????????????????????12 LED 显示模块???????????????????????????13 ROM数据存储模块???????????????????????????14 四、系统原理图设计及仿真分析????????????????????????15 五、硬件实验结果及时序分析结果?????????????????????16 六、总结??????????????????????????????????17 七、异步串行接口电路及通信系统设计下同步地接收并且保存RS-232接收端口上的串行数据;在数据发送时,UART内核模块首先依据待发送的数据和奇偶校验位的设置产生完整的发送序列,之后控制移位寄存器将序列加载到移位寄存器的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。
根据设计的要求,奇偶校验模块可以省略。
UART 的接收和发送过程的原理框图如下:5 异步串行接口电路及通信系统设计二系统设计方案顶层逻辑设计图UART接收模块和发送模块设计框图接收模块发送模块 6 异步串行接口电路及通信系统设计UART接收模块的功能:实时检测线路,当线路产生下降沿时,即认为有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。
UART 发送模块的功能:空闲状态,线路处于高电平;当受到发送数据指令后,拉低线路一个数据的时间T,接着数据按低位到高位一次发送,数据发送完毕后,接着发送停止位,一帧数据发送结束。
设计说明整个串行通信系统8个模块构成:1个50分频器cnt50、1个1M 分频器cnt_1M、1个用于产生16倍波特率的模块325分频器clkdiv325、1个并转串UART数据接收模块dyzrx、1个串转并UART数据发送模块dyztx、1个LED显示模块dyz_disp、1个自建ROM 模块rom123以及它的地址寻址模块adress1 。
其中,dyzrx和dyztx为UART 核心模块。
实验室用FPGA上的晶振产生一个频率为50MHz的信号,该时钟信号通过模块cnt50和cnt_1M,得到1Hz的时钟信号,该时钟信号作为adress1、rom123的控制时钟和dyztx的wrsig(写控制)信号。
同时,让50MHz的信号通过模块clkdiv325,得到一个16倍波特率的收发时钟频率,它控制数据收发模块dyzrx和dyztx的数据收发以及显示模块dyz_disp的显示。
整个通信系统实现的功能为:当时钟上升沿到来的时候,PC机端接收来自串口调试助手的rx的数据并将其显示,即实现与PC 机的通信;在FPGA 端,发送的数据来自于rx串转并后的dataout的值,并将该值送给adress1,利用地址寻址得到ROM123内对应存储位置的数据,其中ROM123内的数据量为256,编程设置ROM123内的地址自增启动信号为“11”。
即当小助手发送“11”的时候将启动adress1模块寻址读数,并将“11”显示在选中的数码管上,与此同时,在满足波特率的时钟作用下地址模块将自动连续发送ROM123的存储数据,发送结束之后将结束判断数据显示在FPGA端上。
7 异步串行接口电路及通信系统设计三单元程序设计及仿真分析系统时钟50分频模块将系统的标准50HZ时钟50分频产生1Mhz的时钟,为时钟分频的一个过度模块,为产生1HZ的时钟奠基。
电路原理图和模块图如下所示:cnt50clkclkoutinst4其时序仿真图如下:可见实现了对时钟的50分频的功能。
1MHz 时钟1M分频把1MHz时钟分为1HZ,RTL电路原理图及模块图如下,将上述的1MHz 的时钟分频为1Hz的时钟信号。
cnt_1Mclkclkout 8 inst5 异步串行接口电路及通信系统设计时序仿真图如下:于分频的设置导致不能明显地看到分频的效果,但其正确性是毫无疑问的。
波特率产生模块直接将系统的50MHz时钟325分频产生最接近16倍9600波特率的信号。
其模块图和RTL原理图如下:clkdiv325clkclkoutinst1 时序仿真图如下:跟上一情况一样于分的次数太大无法看到明显的时序图。
9异步串行接口电路及通信系统设计地址寻址模块电路图将接收的数据串转并成为地址寻址信号,用以对我们自建的ROM123里面的数据进行寻址读数,adress[7..0]后面即接的是ROM123的adress[7..0]。
其RTL原理图和模块图如下:adress1clkdata[7..0]adress[7..0]inst3 时序仿真图如下:可见只要我们给与data一个“11”的启动值,寻址模块遍可以不停滴连续从0到255寻址继而读数,仿真效果很理想。
10 异步串行接口电路及通信系统设计数据接收模块目的在于把接收到的数据通过锁存后转换成可以输给译码电路译码显示。
其RTL原理图和模块图如下:Mux8Add0+cnt~[7..0]rxfallprocess_1~0re ceiveMux9cnt[7..0]receive~1rdsig~reg0rd sigMux7rdsig~0Mux10dataout[7..0]~reg0dataout[7..0]Mux11Mux6Mux12Mux13M ux5Mux14Mux15Mux16Mux4Mux17Mu x3Mux2Mux1Equal0=rxbufrxclkreceive~ 0process_0~0idleMux0idle~0 dyzrxclkrxdataout[7..0]rdsiginst8时序仿真图如下:可见在时钟和rdsig、idle有效的情况下数据能正确转换到datadout,后面续借显示部分的电路即可以显示出十六进制的数值。