




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2009级可编程逻辑课程设计课程名称: 可编程逻辑设计实验题目: 异步串行接口电路及通信系统设计学生姓名: YC、SXL、ZY、YLJ、WJ开课学院: Bio学院开课时间: 2011至2012学年第二学期重庆大学本科学生课程设计指导教师评定成绩表学 院be学院指导教师Zxm. Wxp.年级2009级专 业BME学生姓名YC、SXL、ZY、YLJ、WJ课程设计题目异步串行接口电路及通信系统设计指导教师评语课程设计成绩指导教师签名: 年 月 日重庆大学本科学生课程设计任务书课程设计题目异步串行接口电路及通信系统设计学院BE学院专业BME年级、班09 BME 01、02班设计要求:设计一个能进行异步全双工串行通信的模块,该模块以固定的串行数据传送格式收发数据。 1) 每帧数据供10 位,其中 1位启动位,8位数据位,1位停止位 。2) 波特率为:9600。3) 收发误码率1% 。4) 实现与PC机的通信,PC机端采用串口调试助手。在 PC 机端,用串口调试助手发送和显示数据;在 FPGA 端,发送的数据来自于自建ROM内存储的数据,数据量为200,接受数据由串口调试助手发送,并由数码管显示接受数据值。学生应完成的工作:(1) 程序的编写,完成功能的仿真;(2) 利用SIGNALTAP完成在线的仿真及调试,使达到设计要求。(3) 实验报告的书写。参考资料:1 潘松,黄继业 EDA技术使用教程 科学出版社 2006.62 何伟 现代数字系统实验及设计 重庆大学出版社 2005.93 李素梅 基于FPGA的ROM设计问题 期刊论文-信息技术 2010(3):87-934 刘进海,刘志博,马力 基于RS- 232 异步串行通信接口通用通信协议的设计与实现 期刊论文-现代电子技术 1998(7):8-105 刘兰石,郭建英,王长清 异步串行通信接口电路的VHDL语言设计 新乡师范高等专科学校学报 2003.9(5):30-32课程设计工作计划:6月25日6月26日:资料的查询;6月27日6月29日: 程序的书写;6月30日7月2 日 :程序的调试,达到最终的目的;7月3 日 7月5日 :报告的书写。任务下达日期 2012 年 6 月 25 日 完成日期 2012 年 7 月 6 日指导教师 (签名) 学生 (签名)说明:1、学院、专业、年级均填全称。 2、本表除签名外均可采用计算机打印。本表不够,可另附页,但应在页脚添加页码。摘要摘要通用串口是远程通信接口,在数字系统使用很普遍,是一个很重要的部件。本论文使用VHDL语言描述硬件功能,并适当借助Verilog HDL语言,利用QuartusII9.0在 FPGA 芯片上的综合描述,采用模块化设计方法设计UART(通用异步收发器)的各个模块。其中包括波特率发生器,程序控制器,UART数据接收器和UART数据发送器,本文采用的外部时钟为50MHZ,波特率为9600。在QuartusII 9.0环境下进行设计、编译和仿真。最后的程序编译仿真结果及硬件测试结果表明系统设计完全正确。关键字:VHDL; Verilog HDL;UART; 帧格式; FPGA;异步通信 AbstractIn this paper, the use of hardware description languages VHDL function, the Verilog HDL language ,the use of Alteras 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 9.0 and Modelsim6.0 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 CommunicationIV目录目录一 、课题设计概述及原理 11.1设计目的11.2设计要求11.3设计内容11.4设计原理11.4.1 串行通信的基本概念 1 1.4.1.1 数据传输方式 11.4.1.2 波特率21.4.1.3 误码率21.4.1.4 串行通信的基本方式21.4.2 异步串行通信标准接口21.4.3 异步通信的控制时钟31.4.4 全双工串行通信模块UART 4二 、系统设计方案 62.1 顶层逻辑设计图 62.2 设计说明 62.3 单元程序设计及仿真分析 7三 、单元程序设计及仿真分析 73.1系统时钟50分频 83.2 1MHz时钟1M分频83.3 波特率产生模块93.4 地址寻址模块电路图 103.5 数据接收模块 113.6 数据发送模块电路图 123.7 LED显示模块 133.8 ROM数据存储模块14四 、系统原理图设计及仿真分析15五 、硬件实验结果及时序分析结果 16六 、总结17七 、参考文献19八 、附录20附录(分工说明)20附录(设计程序)20 325分频 20地址模块 21rom模块 21uart接收模块22uart发送模块 25显示模块 28异步串行接口电路及通信系统设计一、 课题设计概述及原理1.1设计目的 1) 掌握串行通讯中的状态机的工作原理和设计方法。 2) 掌握串并转换和并串转换的工作原理和设计方法。3) 掌握寄存器、BCD数码管的工作原理和设计方法。4) 掌握自建ROM数据存储的原理和方法。5) 掌握异步串行通讯电路及系统的设计方法。6) 掌握在EDA系统软件Quartus环境下基于FPGA/CPLD的数字系统设计方法,掌握该环境下功能仿真、时序仿真、管脚锁定和芯片下载的方法。1.2设计要求 设计一个能进行异步全双工串行通信的模块,该模块以固定的串行数据传送格式收发数据。要求如下: 1) 每帧数据供10 位,其中 1位启动位,8位数据位,1位停止位 。2) 波特率为:9600。3) 收发误码率1% 。4) 实现与PC机的通信,PC机端采用串口调试助手。在 PC 机端,用串口调试助手发送和显示数据;在 FPGA 端,发送的数据来自于自建ROM内存储的数据,数据量为200,接受数据由串口调试助手发送,并由数码管显示接受数据值。1.3设计内容1) 设计异步串行接口电路、分频器、ROM、全双工串行通信模块和译码显示电路。2) 设计系统顶层电路。3) 进行功能仿真和时序仿真。4) 对仿真结果进行分析,确认仿真结果达到了设计要求。5) 在EDA硬件开发系统上进行硬件验证与测试,确保设计电路系统能正确的工作。1.4设计原理1.4.1 串行通信的基本概念1.4.1.1数据传输方式 在串行通信中,数据在通信线路上的传送有三种方式: 单工方式 数据只能按一个固定的方向传送。 半双工方式 数据可以分时在连个方向传输,但不能同时双向传输。 全双工方式 数据可以同时在两个方向上传输。 本设计选用的是全双工方式。 1.4.1.2 波特率 即单位时间内传送的二进制数据的位数,也称数据位率,单位为bit/s(位/秒)。波特率是衡量串行数据传送速度快慢的重要指标和参量。 在串行通信中,数据的接收和发送都必须要有时钟信号对传送的数据进行定位和同步控制。波特率与收/发时钟频率的关系如下:收/发时钟频率 = n波特率 n的取值一般为1、16、32、64等。同步通信必须满足n=1,异步通信中常采用n=16. 1.4.1.3 误码率 即数据经过传输后发生错误的位数(码元数)与总传输位数(码总元数)之比,其与通信线路质量、干扰大小及波特率等因素有关。 1.4.1.4 串行通信的基本方式(两种) 异步串行方式 数据流中,字符间异步,字符内部各位间同步。 同步串行方式 数据流中,字符间以及字符内部各位间都同步。 目前PC机的串行接口基本都采用的异步通信方式,故本设计也采用此方式。1.4.2 异步串行通信标准接口 通信协议,即通信规程,指通信双方在信息传输格式上的一种约定。 在数据通信中,收/发器之间传送的是一组二进制的“0”“1”位串,而“0”“1”在不同的位置可能有不同的含义。有的只用于同步,有的代表通信双方的地址,有的是控制信息,有的是为了差错控制而附加上的冗余位,有的则是真正的需要传输的数据。这些都需要在通信协议中事先进行约定,以形成收/发双方共同遵守的格式。 逐位传送的串行通信中,接收端必须能够识别每个二进制位的开始和结束,即位定时;还要能识别每个字符的开始和结束,即字符定时。异步串行通信时,每个字符作为一帧独立的信息,可随机出现在数据流中,即每个字符出现在数据流中的相对时间是任意的。一个字符一旦出现后,字符中的各位便以预先固定的时钟频率进行传送。为确保异步通信的正确性,必须找到一种可以使收/发双方在随机传送的字符间实现同步的方法,即在字符格式中设置起始位和停止位。 如图所示:每帧信息(即每个字符)由4部分组成: 1位起始位,规定为低电平“0”; 5-8位数据位,紧跟于起始位的后面。规定从低位向高位依次传送; 0位或1位奇偶校验位;1位,3/2位或2位停止位,规定为高电平。起始位标志着每个字符的开始,通知接收器开始装配一个字符,以便和发送器取得同步;停止位标志着每个字符的结束。通过起始位和停止位的结合,实现异步字符传输的同步。异步通信的关键是接收器必须准确地发现每个字符开始出现的时刻,因此协议规定起始位和结束位必须采用相反的极性,利用前一个字符的高电平停止位到后一个字符的低电平起始位的负跳变,接收器便知道这是一个字符的开始,以此作为新字符内位检测与采样的时间基准。为保持相邻两个字符的转换是一个负跳变,故通信协议规定字符与字符间出现的空闲状态(冗余位)也用“1”填充。 按课程设计要求,我们的设计的传输格式为1位起始位,1位停止位和8位数据位,无奇偶校验位。1.4.3 异步通信的控制时钟 因为在异步通信中,同步只在一个字符间保持,每个字符在传输时都会有新的起始位和停止位,故发送时钟和接收时钟只需分别使用两个频率相同的局部时钟,无需使用同一个时钟。由于收/发器使用的为各自独立控制的时钟,他们的频率虽然要求要相同,但不可能真正严格的相同,它们的上下始终边沿总会不可避免地出现一定程度的偏移。这种收/发时钟的相对误差会导致接收端的采样错误,为保证数据能正确传送,除了用起始位、停止位和空闲位提供正确的时间基准外,还可以采用接收器在码元中心进行采样,获得最大收/发时钟频率偏差容限的方法来实现。为了保证在每个码元的中心位置采样,在准确知道起始位前沿的前提下,接收器在起始位前沿到来后,先等半个周期采样一次,然后每过一个位周期采样一次,直至收到停止位。为提高采样的分辨能力和抗干扰能力,接收器应采用比波特率高的时钟来控制采样时间。利用经16倍波特率的接收时钟实现再同步的过程如上图所示。利用这种经16倍频的接收时钟对串行数据流进行检测和采样,接收器能在一个位周期的1/16时间内决定出字符的开始。不仅有利于实现收发同步,还有利于抗干扰和提高异步串行通信的可靠性。其采样、检测过程为:停止位或任意数目空闲位的后面,接收器在每个接收时钟的上升沿对输入数据流进行采样,通过检测是否有9个连续的低电平来确定它是否为起始位,如果是,则确认其为起始位,并且对应的是起始位中心,然后,以此为准确的时间基准,每隔16个时钟周期采样一次,检测一个数据位;如果不是严格的9个连续的低电平,则认为这是一个干扰信号,将其删除。1.4.4 全双工串行通信模块UART UART(Universal Asynchronous Receiver & Transmitter)即通用异步收发器,是串行通信的一种协议,它规定串行通信的波特率、起始/停止位、数据位、校验位等格式,以及各种异步握手信号。也可将UATR理解为通用串行数据总线,该总线双向通信,可以实现全双工传输和接收。UART能提供RS-232C数据终端设备接口,使计算机可以和调制解调器或其它使用RS-232C接口的串行设备通信,包括监控调试器和其它器件。 计算机内部采用的是并行数据,不能直接把数据发到Modem,必须经过UART的整理才能进行异步传输,其过程为:CPU先把准备写入串行设备的数据放到UART的寄存器中,再通过FIFO(First Input First Output,先入先出队列)传送到串行设备;在UART模块中对要输出的数据流进行加工,使消息帧格式变为从一个低起始位开始,后面是58个数据位,一个可用的奇偶校验位和一个或几个高位停止位;接收时,接收器发现开始位(即0)时就判断数据准备发送,并尝试与发送器始终频率同步,UART从消息帧中去掉起始位和结束位,对进来的字节进行奇偶校验,并将数据字节从串行转换成并行。 上图为UART实现原理图,UART内核模块的功能是控制接收、数据加载和数据发送的过程,常用状态机来实现。在数据接收时,UART内核模块负责控制波特率发生器和移位寄存器,使得移位寄存器在波特率时钟的驱动下同步地接收并且保存RS-232接收端口上的串行数据;在数据发送时,UART内核模块首先依据待发送的数据和奇偶校验位的设置产生完整的发送序列(包括起始位、数据位、奇偶校验位和停止位),之后控制移位寄存器将序列加载到移位寄存器的内部寄存器里,最后再控制波特率发生器驱动移位寄存器将数据串行输出。根据设计的要求,奇偶校验模块可以省略。 UART的接收和发送过程的原理框图如下:二 系统设计方案2.1顶层逻辑设计图2.2 UART接收模块和发送模块设计框图 接收模块 发送模块UART接收模块的功能:实时检测线路,当线路产生下降沿时,即认为有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。UART发送模块的功能:空闲状态,线路处于高电平;当受到发送数据指令后,拉低线路一个数据的时间T,接着数据按低位到高位一次发送,数据发送完毕后,接着发送停止位(停止位为高电平),一帧数据发送结束。2.3设计说明整个串行通信系统由8个模块构成: 1个50分频器cnt50、1个1M分频器cnt_1M、1个用于产生16倍波特率(9600)的模块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端上。三 单元程序设计及仿真分析3.1系统时钟50分频模块将系统的标准50HZ时钟50分频产生1Mhz的时钟,为时钟分频的一个过度模块,为产生1HZ的时钟奠基。电路原理图和模块图如下所示: 其时序仿真图如下:可见实现了对时钟的50分频的功能。3.2 1MHz时钟1M分频把1MHz时钟分为1HZ,RTL电路原理图及模块图如下,将上述的1MHz 的时钟分频为1Hz的时钟信号。 时序仿真图如下:由于分频的设置导致不能明显地看到分频的效果,但其正确性是毫无疑问的。3.3 波特率产生模块直接将系统的50MHz时钟325分频产生最接近16倍9600波特率的信号。其模块图和RTL原理图如下:时序仿真图如下:跟上一情况一样由于分的次数太大无法看到明显的时序图。3.4 地址寻址模块电路图将接收的数据串转并成为地址寻址信号,用以对我们自建的ROM123里面的数据进行寻址读数,adress7.0后面即接的是ROM123的adress7.0。其RTL原理图和模块图如下:时序仿真图如下:可见只要我们给与data一个“11”的启动值,寻址模块遍可以不停滴连续从0到255寻址继而读数,仿真效果很理想。3.5 数据接收模块目的在于把接收到的数据通过锁存后转换成可以输给译码电路译码显示。其RTL原理图和模块图如下:时序仿真图如下:可见在时钟和rdsig、idle有效的情况下数据能正确转换到datadout,后面续借显示部分的电路即可以显示出十六进制的数值。3.6 数据发送模块电路图将接收到来自ROM123的数据通过该电路发送给PC机端,并在FPGA上显示启动位和停止位。其RTL原理图和模块图如下:时序仿真图如下:可见在时钟到来,idle、wrsig有效的情况下,通过该电路可以将收到的数据输出。3.7 LED显示模块时序仿真图如下:可见对于给与的任意一个十六进制的数据,都能正确通过译码电路到LED部分显示,效果明显。3.8 ROM数据存储模块通过QuartusII9.0软件,依次选择FILENEWMemory Initialize File,从0到255一次存入256个数据,保存为.mif文件用于寻址输出数据用。在顶层图中双击新建ROM模块,设置数据宽度为8bit,256words,将.mif文件和ROM相关联,即生成如图所示的模块图。四 原理图设计及仿真分析RTL级电路图仿真波形见上图:由图可见给rx一个“1”,输出tx也为“1”, 故仿真结果正确。五 硬件实验结果 如上图所示为硬件调试时,通过串口小助手发送启动数据“11”时,PC端的显示结果,即当PC端发出“11”,启动adress1中对应指令,使地址自加1,依次每隔1秒读出对应地址所存的256个数据,并显示在串口小助手的接收窗口,与此同时,FPGA的LED部分显示“11”。当256个数据完全读出后,如果不改变手动端发送的数据“11”,则这256个数据将循环发送并显示在串口小助手接收窗口;若改变命令值,使其为除“11”之外的有效数据,则接收窗口将显示手动输入的那个值,并且这个值将同时显示在FPGA端的LED上。六 总结 这次课程设计对我们来说是考验,但是有考验才有收获。从开始的分组,选课题,做课题,到实验结束,其中的种种让我们学习到了很多。拿到课题时,老师对其中的某些概念原理做了讲解,可我们对其中具体的细部原理仍然不是很明白。实验开始的时候,我们每个人都查找了关于该课题的资料,了解了课题的原理,不懂得地方请教了同学和老师,清楚了实验要实现的功能。经过了查资料这一环节,我们发现数电实验书中有和课题类似的例子,所以我们参考了书上的程序,根据实验要求进行了修改,尝试去实现我们想要的功能。初始的电路设计方案包含了分频模块、地址模块、rom模块、SCI模块和led显示模块。大概的思路是通过恰当的分频得到要求的波特率,使用时钟触发,通过地址的改变使rom发送数据,SCI模块串并转换、并串转换(借助状态机)后分别由串口小助手接收、led进行显示。但是我们并没有得到想要的结果,硬件下载后实验板没有显示。我们发现书上提供的方案与实际的硬件条件在很多方面都不一样,于是我们修改了显示模块的程序,使它符合实验室提供的实验板。修改后,实验板经硬件下载能显示初始值00,串口发送数据后仍然没有实现接收功能。经过老师的耐心讲解,我们发现我们对波特率的理解有误,实验需要的是16倍波特率的信号,我们改动了分频模块的程序,先50分频后再6分频,使其接近9600波特率。但是实验结果并不正确,串口小助手能自行将接收到的数据不断显示,不随其发送的信号触发,且发送的数据单一,并不是最终希望得到的数据。询问老师后得知,出现此现象是由于系统内部对于起始位的识别有偏差,将错误的数据位定义为起始位后,将其后的数据不断发送给串口导致的。但是我们多次检查SCI部分的程序,并没有发现问题。老师提示我们可能书本上的模块与实际硬件的协议不同,于是我们把SCI模块换成uart,其中一个uart用于接收数据,另一个用于发送。调试时没有添加rom模块,是想看更换之后的两个uart能否接收数据并且将接收到的数据发送出来。硬件下载成功,串口小助手发送数据后能够接收,并且led灯能把发送的数据显示出来,但是显示的数据与存储的数据总有一定的差值,说明采样并不准确。于是我们将之前的300分频换成了325分频,显示正确。实验做到这一步才发现实际的电路与参考书上的电路其实很不一样,几乎每一个模块我们都进行了更换与修改,这也就解释了实验前几天用参考书上的程序无法调试出正确结果的原因。在实验中,具体模块仍然要具体分析,我们应该根据实际情况作出相应的改动,书本只能为我们提供思路,对实验的过程作出引导,具体模块的设计和程序的编写仍然要自己不断摸索分析才能得出。接收及显示成功后请老师检查,才得知我们对于实验要求的理解也有偏差。接收以及显示只是基本功能,我们的设计需要串口小助手给出信号后,硬件将其显示出来,此时rom开始发送数据,串口小助手将rom发送的数据全部接收到。之前的rom模块是通过计数来改变地址,给出一个时钟信号后只能把相应地址里存的数据发送出去,即add=cnt,并且256个数据是顺序存放的。了解了最终实现的功能后,我们把串口输入的数据也作为地址模块的输入之一,赋给其相应的“开始送数”的信号后(实验中为11H),地址模块才开始将地址自加,将rom里面的数据全部发送。修改过后,实验所要求的大部分功能都已实现。当时钟上升沿到来的时候在PC机端接收来自串口调试助手的数据,实现与PC机的通信;在 FPGA 端,发送的数据来自于串口小助手串转并后的数据,并将该值给地址模块,利用地址寻址得到对应于ROM内存储的数据,ROM内的数据量为256。编程设置ROM内的地址自增启动信号为“11”。即当小助手发送“11”的时候将启动adress1模块寻址读数,并将“11”显示在选中的数码管上。由于对于波特率的理解有误,数据的显示很慢,一秒显示一个,不满足波特率的要求。且串口发送11H时,接收画面会不断显示00H。终止信号未能实现。我们的设计最终实现的功能并不完善。在课下我们自己对顶层图进行了进一步的修改,将325分频的部分直接连至地址模块,使其实现波特率的要求,对地址模块增加一个与门,使其收到串口输入的信号后才将地址自加,使rom里的数据输出。通过本次试验,我们了解到,课程设计还是要靠自己勤动脑多动手多尝试。尤其是程序的调试过程,可能会出现各种各样的问题。有时程序与硬件不匹配,检查程序并没有错误,但是硬件始终没有显示。有时分频不太准确,差了一点就得不到正确的结果。有时会出现管脚分配错误,导致硬件无反应。有时实验板有损坏,数码管一直不显示。有时下载的串口小助手本身有一些问题,无法发送接收数据。这种种的问题都需要在实际过程中一步步调试,发现,排除。虽然我们这次的设计内容并不是很复杂,但是我们觉得设计的过程相当重要,并且在这个过程中我们学到了很多,收获了很多。通过本次实验,让我们更加灵活的运用VHDL编程实现各种功能,对于仿真和Signaltap的使用更加熟练,硬件方面也更加熟悉其结构,了解管脚,知道怎样编写程序能使其达到想要的效果。由于我们组的课题是异步串行接口电路的通信系统设计,我们对于异步串行电路的协议,如何实现串口的发送接收、如何在rom中存储数据并让其发送以及串口小助手的使用都更加熟悉了。课程设计反映的是从理论到实际应用的过程,在实验过程中锻炼了我们发现问题、分析问题、解决问题的能力,同时对我们实际操作及动手能力的提高提供了很大帮助。七、参考文献1 潘松,黄继业 EDA技术使用教程 科学出版社 2006.62 何伟 现代数字系统实验及设计 重庆大学出版社 2005.93 李素梅 基于FPGA的ROM设计问题 期刊论文-信息技术 2010(3):87-934 刘进海,刘志博,马力 基于RS- 232 异步串行通信接口通用通信协议的设计与实现 期刊论文-现代电子技术 1998(7):8-105 刘兰石,郭建英,王长清 异步串行通信接口电路的VHDL语言设计 新乡师范高等专科学校学报 2003.9(5):30-326 Liakot Ali,Roslina Sidek,Ishak Aris,Alauddin Mohd. Ali,BambangSunaryo Suparjo.Design of a micro - UART for SoC application J.In:Computers and Electrical Engineering 30 (2004) 257268.7 1K杰,杨建宁.基于FPGA的UART控制器的设计和实现J.微计算机信息,2005,8-2:111-113八、附录附录:任务分工 资料查找邹燕、孙显珑、姚超、颜利娟程序编辑及调试邹燕、姚超、孙显珑、王静答辩PPT制作姚超设计报告撰写孙显珑、邹燕、姚超、颜利娟 附录:程序325分频:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity clkdiv325 is port( clk:in std_logic; clkout: out std_logic );end clkdiv325;architecture one of clkdiv325 is signal cnt:integer:=0;begin process(clk) begin if(clkevent and clk=1)then if cnt=324 then cnt=0; else cnt=162 then clkout=1; else clkout=0;end if; end if; end process;end one;地址模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adress1 is port(clk:in std_logic; data:in std_logic_vector(7 downto 0); adress:out std_logic_vector(7 downto 0);end adress1;architecture bav of adress1 is signal cnt:std_logic_vector(7 downto 0); signal cnt1:std_logic:=0;begin process(clk) beginif data=00010001 then cnt1 if clkevent and clk=1 then if cnt=255 then cnt=00000000; else cntnull; end case; end if; end process; adress=cnt;end bav;rom模块LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY altera_mf;USE altera_mf.all;ENTITY rom123 ISPORT(address: IN STD_LOGIC_VECTOR (7 DOWNTO 0);clock: IN STD_LOGIC ;q: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END rom123;ARCHITECTURE SYN OF rom123 IS SIGNAL sub_wire0: STD_LOGIC_VECTOR (7 DOWNTO 0);COMPONENT altsyncramGENERIC (clock_enable_input_a: STRING;clock_enable_output_a: STRING;init_file: STRING;intended_device_family: STRING;lpm_hint: STRING;lpm_type: STRING;numwords_a: NATURAL;operation_mode: STRING;outdata_aclr_a: STRING;outdata_reg_a: STRING;widthad_a: NATURAL;width_a: NATURAL;width_byteena_a: NATURAL);PORT (clock0: IN STD_LOGIC ;address_a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);q_a: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);END COMPONENT;BEGINq BYPASS,clock_enable_output_a = BYPASS,init_file = dyz123.mif,intended_device_family = Cyclone II,lpm_hint = ENABLE_RUNTIME_MOD=NO,lpm_type = altsyncram,numwords_a = 256,operation_mode = ROM,outdata_aclr_a = NONE,outdata_reg_a = UNREGISTERED,widthad_a = 8,width_a = 8,width_byteena_a = 1)PORT MAP (clock0 = clock,address_a = address,q_a = sub_wire0);END SYN;uart接收模块library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity dyzrx is port(clk:in std_logic; rx: in std_logic; dataout:out std_logic_vector(7 downto 0); rdsig: out std_logic );end dyzrx;architecture one of dyzrx is signal dataoutreg:std_logic_vector(7 downto 0); signal rdsigreg: std_logic; signal cnt:std_logic_vector(7 downto 0); signal rxbuf:std_logi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养殖基地采买合同范本
- 沙石供应合同范本
- 车辆工程劳务合同范本
- 个人雇佣合同范本 开车
- 多项机械租赁合同范本
- 房屋购买合同范本
- 农村协议买房合同范本
- 家具吊线转让合同范本
- 电厂供煤合同范本
- 早餐门面分租合同范本
- 2024年北京邮电大学人员招聘笔试真题
- T/CFPA 017-2023消防员防护辅助装备阻燃防静电内衣
- 价值导向引领:CRM策略的深度剖析与创新实践
- 2025至2030年中国稀奶油市场分析及竞争策略研究报告
- 鼓胀中医护理
- 设备整厂出售合同协议
- 2025-2030中国高k和ALD和和CVD金属前体行业市场发展趋势与前景展望战略研究报告
- 高考补习学生管理制度
- 2025年4月12日衢州事业单位及市直遴选(选调)笔试真题及答案解析
- 占用林地补偿协议书
- 信息技术智能办公教程 课件 任务5-邮件合并
评论
0/150
提交评论