FPGA通用异步收发器课程设计
- 格式:doc
- 大小:452.50 KB
- 文档页数:33
通用异步收发器专业:电子信息科学与技术学号:200811526姓名:袁朝阳一实验目的:学习用vhdl语言设计通用异步收发器。
二实验仪器:pc平台,Quartus II8.0软件,EDA6000实验箱。
三实验原理:通用异步收发器由三部分组成。
1 波特率发生器UART波特率是指每个数据位的宽度,UART电路内部的工作时钟是波特率的16倍。
当波特率位2400时,内部时钟位2400*15=38.4k。
2 发送电路当启动发送电路后,发送电路发送出10位串行数据:起始位“0”,D0,D1,D2,D3,D4,D5,D6,D7,停止位“1”3 接受电路当接受到起始位“0”后,每隔一个波特率接受一位行数据。
在rxd输入端还应加有滤波电路。
四实验内容及操作步骤:1 对Quartus II8.0进行破解,操作步骤参考实验一。
2创建工程:选择菜单File->New Preject Wizard命令,即弹出“工程设置”对话框。
设置后在编辑对话框中输入Vhdl代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY EX25 ISPORT(clk : IN STD_LOGIC; -- IO30(P125) 1M clock inputrst : IN STD_LOGIC; -- IO40(P118)rxd : IN STD_LOGIC; -- IO00(P37)xmit_cmd : IN STD_LOGIC; -- IO41(P119)tbuf : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO55..IO48 (P13, P12, P10, P9 , P8 , P137, P136, P135)bclk : OUT STD_LOGIC; -- IO03(P41) 2400 baudrate, 1s / (2400x16) = 26usrec_ready: OUT STD_LOGIC; -- IO04(P43)rbuf : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO15..IO08 (P64, P63, P62, P60, P59, P51, P49, P48)txd : OUT STD_LOGIC; -- IO01(P38)xmit_done: OUT STD_LOGIC -- IO05(P44);END EX25;ARCHITECTURE behv OF EX25 ISSIGNAL rxd_sync: STD_LOGIC;SIGNAL baud_clk: STD_LOGIC;SIGNAL rxd_shift: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL rxcnt16 : INTEGER RANGE 0 TO 15;SIGNAL rxd_cnt : INTEGER RANGE 0 TO 9;SIGNAL txd_shift: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL txcnt16 : INTEGER RANGE 0 TO 15;SIGNAL txd_cnt : INTEGER RANGE 0 TO 10;SIGNAL txd_done : STD_LOGIC;BEGIN-- 生成波特率时钟每个字符位含16个脉冲,2400波特率时每个脉冲宽度为26us-- 基准时钟为1M,将1M时钟26分频即可得到。
实例分析EDA技术下的通用异步收发器设计数据通信系统中,通过串行通信来达到交换信息数据的目的是经常采用的方式。
异步串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于PC机和外设的数据交换。
通常都由通用异步收发器UART(Universal Asynchronous Receiver/Transmitter)来实现该功能。
同时在电子设计领域中,SOC片上系统技术日趋成熟,设计者可以在单块或极少数的几块芯片中实现整个系统的功能,将UART的功能模块集成到可编程逻辑器件FPGA (Field Programmable Gate Array)中。
利用EDA(Electronic Design Automation)技术优点来设计串行通信接口,不仅可以直观的让同学们了解到数据链路层的工作原理,还可以在分工协作中深刻领会EDA技术在网络通信中的实际应用。
1 UART工作原理和流程通过对UART工作原理的分析,我们把整个系统模块可划分波特发生器,內核,信号检测器,移位寄存器,奇偶校验器,总线选择器和计数器等。
UART的工作流程可以分为发生和接收两个过程。
1.1 接收过程当UART信号监测器模块的输入口侦测到数据时,即输入口由高电平变为低电平,UART读取串行数据并且将数据并行输给计算机。
首先UART内核会重置波特率发生器和移位寄存器,并且设置移位寄存器的时钟为波特率时钟,以准备接收串行数据。
接着,移位寄存器模块在波特率时钟的驱动下,不断读取串行总线的输入数据,并将串行数据保存在内部的寄存器中。
接收完毕,UART内核会对已接收的数据进行奇偶校验并输出校验结果。
同时,UART内核会复位信号监测器,以准备进行下一次数据接收。
1.2 发送过程由加载Load和发送Send两个部分组成,如图3所示。
加载是内核依串行发送的顺序将起始位、数据位和奇偶校验位依次加载到移位寄存器内,这个过程移位寄存器工作在系统时钟下,相对于外部总线传输速度来说非常快。
毕业设计设计题目基于FPGA的异步收发器设计学院:物理科学与工程技术学院专业:电子信息工程年级:10级姓名:陈淑珍指导教师:王永祥职称:副教授(2013年 6月)宜春学院教务处制宜春学院物理科学与工程技术学院电子信息工程李扬指导老师:王永祥摘要:文章简要介绍了UART的基本功能,采用Verilog HDL语言作为硬件功能的描述,运用模块化设计方法设计了通用异步收发器的发送模块、接收模块和波特率发生器。
实现了基于FPGA的UART基本功能设计,并给出了UART的软件编程实例.关键字:Verilog HDL;FPGA;UARTBased on SCM ultrasonic ranging system Design( YiChun University Physical science and engineering institute of technology Li Yang)Abstract: this paper briefly introduces the basic function of UART, the Verilog HDL language as a description of the hardware function, using modular design method to design the general asynchronous transceiver module, receive send the module and baud rate generator. Realized the basic function of UART which based on FPGA , and gives the UART software programmingexamples. Key word: Verilog HDL; FPGA; UART; A引言 (2)1 . UART简介 (2)1.1 UART结构 (2)1.2 UART的帧格式 (2)1.3 UART的基本原理 (2)2 UART的设计与实现 (3)2.1 UART发送器 (3)2.2 UART接收器 (4)2.3数码管动态显示 (5)2.4 波特率发生器 (6)2.5 UART设计总模块 (6)3.FPGA UART系统组成 (7)4.模块设计 (8)4.1. 顶层模块 (8)4.2波特率发生器 (10)4.3 UART发送器 (11)4.4 UART接收器 (15)5.结语 (17)6..参考文献 (18)1引言由于微电子学和计算机科学的迅速发展,给EDA(电子设计自动化)行业带来了巨大的变化。
四川师范大学本科毕业设计基于FPGA的UART设计学生姓名院系名称专业名称班级学号指导教师完成时间基于FPGA的UART设计电子信息工程专业摘要:UART(通用异步收发器)是一种应用广泛,协议简单,易于调试的串行传输接口。
FPGA是能高密度,低消耗完成所需要的逻辑功能的一种在线可编程器件,是现在业内提高系统集成度最佳技术之一,其可反复配置,且使用灵活。
VHDL 是描述电路功能或行为的一种硬件语言。
本文首先阐述了运用FPGA实现UART接口的意义。
接着介绍了UART的波特率发生器,发送功能和接收三大核心功能的理论知识。
FPGA的工作原理,配置模式以及VHDL语言实现状态机的相关理论基础。
给出了运用VHDL语言将UART三大功能嵌入在FPGA上的模块化设计方法。
设计包括四大模块:顶层模块,波特率发生器,UART接收器,UART发生器。
在FPGA片上集成UART主要功能,减少了电路板体积,同时电路也增加了可移植和反复配置功能,有效提高了电路的集成度和灵活性。
最后运用Quartus ii 9.1实现了其功能仿真。
关键词:FPGA UART VHDL 有限状态机The Design of Universal Asynchronous Receiver Transmitter Based on FPGAAbstract:UART (Universal Asynchronous Receiver Transmitter) is a widely used, simple protocol, easy to debug serial transmission interface. FPGA is capable of high-density, low-cost needed to complete a line of programmable logic devices, is now one of the industry's best technologies to improve system integration, which can be repeated to configure and use and flexible. VHDL description of the circuit function or behavior is a hardware language. This paper first describes the use of FPGA to realize the significance of the UART interface. Then introduced the theory of knowledge UART baud rate generator, sending and receiving three core functions. FPGA works, configuration mode and the VHDL-based state machine theory. Gives the UART using VHDL language to three functions embedded in the FPGA design. Design includes four modules: the top-level module, baud rate generator, UART receivers, UART generator. Integrated on-chip UART FPGA basic functions, reducing board space, the circuit also increases the portability and repeated configuration capabilities, improve the integration and flexibility of the circuit. Finally, the use of Quartus ii 9.1 implements its functional simulation.Key Words:FPGA ;UART ;VHDL;FSM目录摘要: (I)Abstract: (II)1 绪论 (1)1.1 课题背景 (1)1.2 课题研究现状 (2)1.3 课题研究内容与主要工作 (3)1.4 课题内容结构 (3)2 UART理论基础 (4)2.1 接口技术简介 (4)2.2 UART基本结构 (4)2.3 UART数据帧格式 (5)2.4 涉及到的理论计算 (6)3 设计工具 (7)3.1 课题硬件平台——FPGA (7)3.2 设计工具QuartusII简介与使用 (7)3.3 VHDL语言简介 (7)4 UART实现方案 (8)4.1 系统总体结构 (8)4.2 顶层模块设计 (8)4.3 波特率发生模块设计 (9)4.4 接收模块 (10)4.5 发送模块设计 (12)5 UART设计的仿真与验证 (15)5.1波特率发生模块仿真 (15)5.2 接收模块仿真 (15)5.3 发送模块仿真 (16)6 总结 (17)参考文献 (18)致谢 (19)附录 (20)基于FPGA的UART设计1 绪论在计算机的数据通信中,外设一般不能与计算机直接相连,它们之间的信息交换主要存在以下问题:(1)速度不匹配。
基于FPGA的通用异步收发传输器控制FLASH存储系统设计柳炳琦;庹先国;李怀良;刘明哲;黄辉【摘要】为了解决测井数据文件的存储问题,提出了一种基于FPGA实现通用异步收发传输器(UART)控制FLASH存储系统设计的方法.以FPGA作为核心控制器对系统结构进行了模块化分解,以适应自顶向下的设计方法.在Quartus Ⅱ开发平台中采用Verilog硬件描述语言利用有限状态机,实现了UART控制FLASH的读、写、擦除操作;并给出了UART控制FLASH的数学模型.采用Spansion公司的S29AL016D系列FLASH结合FPGA和UART设计了接口电路.最后在Modelsim 环境下进行仿真,验证了该存储系统设计的正确性和可靠性.【期刊名称】《科学技术与工程》【年(卷),期】2014(014)007【总页数】5页(P223-226,232)【关键词】垂直地震创面(VSP);通用异步收发传输器(UART);FPGA;FLASH;有限状态机【作者】柳炳琦;庹先国;李怀良;刘明哲;黄辉【作者单位】成都理工大学,成都610059;西南科技大学,绵阳621010;西南科技大学,绵阳621010;成都理工大学,成都610059;电子科技大学,成都620059【正文语种】中文【中图分类】TP333.2VSP(vertical seismic profiling,垂直地震剖面)[1]作为一种新型井中地震观测方法被广泛地应用于地震勘探领域,其中测井数据的存储问题在该系统中占有重要地位。
随着电子计算机技术,尤其是嵌入式技术的大力发展,UART(universal asynchronous receiver/transmitter,通用异步收发传输器)和FLASH 得到了广泛的应用[2,3],在对存储数据处理速度要求不高的场合,FLASH的读写控制一般可以通过单片机等处理器实现[4],但是在高速数据处理领域,利用FPGA(field-programmable gate array,现场可编程门阵列)实现FLASH存储系统控制的工程应用相当广泛。
F PG A通用异步收发器课程设计(总24页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--课程设计任务书学生姓名:瞿子敬专业班级:通信1104 指导教师:陈适工作单位:信息工程学院题目:FPGA通用异步收发器设计课程设计目的:1.熟练使用VHDL语言进行电路设计;2.能够运用相关软件进行模拟分析;3.掌握基本的文献检索和文献阅读的方法;4.提高正确的撰写论文的基本能力。
课程设计内容和要求1.内容:FPGA通用异步收发器设计2.要求:使用VHDL语言完成电路设计,并在此基础上进行仿真,得到正确结果。
初始条件QuartusⅡ仿真平台时间安排1.方案设计,1天;2.软件设计,2天;3.系统调试,1天;4.答辩,1天。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要................................................................................................ 错误!未定义书签。
Abstract .......................................................................................... 错误!未定义书签。
1. UART简介.................................................................................. 错误!未定义书签。
UART基本特点..................................................................... 错误!未定义书签。
FPGA URAT系统组成 ........................................................... 错误!未定义书签。
嵌⼊式系统实验—通⽤异步收发器(UART)实验实验五:通⽤异步收发器(UART)实验Technorati 标签: 嵌⼊式系统实验,通⽤异步收发器,UART,mini2440,arm,j-link,keil-uvision,实验报告⼀、实验⽬的1、掌握 UART 外设的操作原理和编程。
2、学习使⽤ UART 进⾏多机通讯。
⼆、实验设备1、硬件:PC 机⼀台、Mini2440 ARM 实验板⼀套 J-link 仿真器⼀套2、软件:WindowsXP 系统,Keil uVision 4.0 集成开发环境三、实验内容(1)使⽤ C 语⾔编写 UART 基本收发数据程序,进⾏ 2 个实验板之间的数据收发测试。
(2)⽤两个实验板模拟嵌⼊式控制系统中的数据采集/控制实验,其中⼀个实验板模拟数据采集模块,将通过UART 返回数据;另⼀块实验板模拟控制系统的主机,通过 UART 采集数据,并通过 UART 发出控制指令。
四、实验预习要求(1)学习 UART 相关的原理概念;(2)查阅 S3C2440 芯⽚⼿册,了解 UART0 结构和原理。
五、实验步骤(1)启动 Keil uVision,新建⼀个⼯程ex05。
不需要系统提供的 Startup ⽂件。
建⽴汇编源⽂件 ex05.s,编写实验程序,然后添加到⼯程中。
设置⼯程选项,存储器映射。
设置⼯程调试选项。
建⽴仿真初始化⽂件 RAM.ini。
(2)建⽴ C 语⾔源⽂件 main.c,编写实验程序,然后添加到⼯程中。
(3)使⽤交叉串⼝电缆连接两个实验板。
(4)编译程序,使⽤仿真器在⽬标板上调试运⾏程序,使⽤单步、设置断点,观察程序执⾏时,收发数据的值。
六、实验程序C 语⾔实验程序见程序清单 5。
程序清单 4.1 UART 实验程序// Uart0#define WrUTXH0(ch) (*(volatile unsigned char *)0x50000020)=(unsigned char)(ch)#define RdURXH0() (*(volatile unsigned char *)0x50000024)#define rULCON0 (*(volatile unsigned *)0x50000000) //UART 0 Line control#define rUCON0 (*(volatile unsigned *)0x50000004) //UART 0 Control#define rUFCON0 (*(volatile unsigned *)0x50000008) //UART 0 FIFO control#define rUMCON0 (*(volatile unsigned *)0x5000000c) //UART 0 Modem control#define rUTRSTAT0 (*(volatile unsigned *)0x50000010) //UART 0 Tx/Rx status#define rUERSTAT0 (*(volatile unsigned *)0x50000014) //UART 0 Rx error status#define rUFSTAT0 (*(volatile unsigned *)0x50000018) //UART 0 FIFO status#define rUMSTAT0 (*(volatile unsigned *)0x5000001c) //UART 0 Modem status#define rUBRDIV0 (*(volatile unsigned *)0x50000028) //UART 0 Baud rate divisor#define rGPHCON (*(volatile unsigned *)0x56000070) //Port H control#define rGPHUP (*(volatile unsigned *)0x56000078) //Pull-up control H//PCLK:12MHz#define PCLK 12000000//( (int)(pclk/16./baud+0.5) -1 )#define baud_value 12 //57600void Uart_Init(){int i;rUFCON0 = 0x0; //UART channel 0 FIFO control register, FIFO disablerUMCON0 = 0x0; //UART chaneel 0 MODEM control register, AFC disablerULCON0 = 0x3; //Line control register : Normal,No parity,1 stop,8 bits// [10] [9] [8] [7] [6] [5] [4] [3:2] [1:0]// Clock Sel, Tx Int, Rx Int, Rx Time Out, Rx err, Loop-back, Send break, TransmitMode, Receive Mode// 0 1 0 , 0 1 0 0 ,01 01// PCLK Level Pulse Disable Generate Normal NormalInterrupt or PollingrUCON0 = 0x245; // Control registerrUBRDIV0= baud_value; //Baud rate divisior register 0for(i=0;i<100;i++);rGPHCON |= 0xaa;//use GPH port as uart0rGPHUP =0x0f;//the pull up function is disabled}void Uart_SendByte(int data){WrUTXH0(data);char Uart_Getch(void){while(!(rUTRSTAT0 & 0x1)) //Receive data readyreturn RdURXH0();}main(){char c = 'a';Uart_Init();Uart_SendByte(c);while(1){c = Uart_Getch();c++;Uart_SendByte(c);}七、实验现象两块实验板在接收指令处设断点,然后实验板1全速运⾏,实验板2接着全速运⾏,实验板1⾃动暂停。
摘要:通用异步收发器是一种能同时支持短距离和长距离数据传输的串行通信接口,被广泛应用于微机和外设之间的数据交换,本文对FPGA的通用异步收发器设计进行分析。
关键词:通用异步收发器数据传输数据交换串行通信方式传递数据所传输的距离比较远,所用的数据线也很少,并且其稳定性也高。
因此在数据通信方面能够被广泛的使用。
异步收发器(UART)是经常被使用来进行串口通信的设备。
本文就是用VHDL语言编写的应用在FPGA上的一个UART。
在传递数据时,我们仅仅需要使用UART的几个作用,所以如果专门购置专用的UART,则会造成资金和功能上的浪费。
恰好VHDL可以用硬件语言搭建出UART的模型,可以根据所需要的功能来进行程序的编写,这样既省费用又省步骤。
1UART的工作原理UART(Universal Asynchronous Receiver Trans-mitter,通用异步收发器)是通常使用的异步串行传递数据的传输协议。
在串行通信中,数据是一个字节帧一个字节帧来发送信息的。
发送端和接收端在接收数据帧的时候必须有约定的格式和约定的波特率。
一个数据帧由1位起始位(低电平)、5~8位数据位、1位校验位(可选可不选)和停止位来组成。
一个数据帧的开始便是起始位,起始位处于逻辑0状态,处于逻辑0状态就表明发送端已经准备开始发送数据了。
一个数据帧的结束是停止位,停止位处于逻辑1状态,处于逻辑1就表明接收端已经停止接收数据了。
而波特率采用标准速率9600字节每秒。
数据在传输时,低位在前,高位在后。
接收端检测并确认起始位后,开始接收数据位。
当接到停止位后,FPGA向CPU发出中断信号。
发送数据时,CPU设置波特率为9600字节每秒,然后FPGA将数据一帧一帧的通过总线传递给CPU,当CPU接收到低电平时,表示此时数据传送结束。
2程序设计与仿真顶层程序与仿真:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity top isport(clk32mhz,reset,rxd,xmit_cmd_p_in:in std_log-ic;rec_ready,txd_out,txd_done_out:out std_logic;txdbuf_in:in std_logic_vector(7downto0);rec_buf:out std_logic_vector(7downto0);bclkout:out std_logic);end top;architecture Behavioral of top iscomponent recieverport(bclkr,resetr,rxdr:in std_logic;r_ready:out std_logic;rbuf:out std_logic_vector(7downto0));end component;component transferport(bclkt,resett,xmit_cmd_p:in std_logic;txdbuf:in std_logic_vector(7downto0);txd:out std_logic;txd_done:out std_logic);end component;component baudport(clk,resetb:in std_logic;bclk:out std_logic);end component;signal b:std_logic;beginu1:baud port map(clk=>clk32mhz,resetb=>reset, bclk=>b);u2:reciever port map(bclkr=>b,resetr=>reset,rx-dr=>rxd,r_ready=>rec_ready,rbuf=>rec_buf);u3:transfer port map(bclkt=>b,resett=>reset, xmit_cmd_p=>xmit_cmd_p_in,txdbuf=>txdbuf_in,txd=>txd_out,txd_done=>txd_done_out);bclkout<=b;endBehavioral;3总结UlART经常用于数据之间的串行通信,它所需要使用的线路较少,并且稳定性高,数据可以传输很长的距离,因此芯片或计算机系统之间进行数据传送时经常用UART。
文华学院FPGA课课程设计一、教学目标本课程的教学目标是使学生掌握FPGA的基本原理、设计和应用方法。
通过本课程的学习,学生将能够:1.理解FPGA的基本概念、结构和特点。
2.掌握FPGA的设计流程,包括硬件描述语言的编写、逻辑综合、布局布线和编程下载等。
3.熟悉FPGA的应用领域,如数字信号处理、嵌入式系统、网络通信等。
4.培养学生动手实践能力和团队协作精神。
二、教学内容本课程的教学内容主要包括以下几个部分:1.FPGA的基本原理:介绍FPGA的起源、发展历程、工作原理和主要性能指标。
2.FPGA的结构与特点:讲解FPGA的内部结构、编程方式及其与ASIC、ASIP的区别。
3.硬件描述语言(HDL):学习Verilog和VHDL两种常用硬件描述语言的基本语法和编程技巧。
4.FPGA设计流程:熟悉FPGA的设计流程,包括需求分析、硬件描述语言编写、逻辑综合、布局布线和编程下载等。
5.FPGA应用案例:分析数字信号处理、嵌入式系统、网络通信等领域的FPGA应用实例。
6.实践环节:进行FPGA实验,锻炼学生的动手实践能力和实际问题解决能力。
三、教学方法为了达到本课程的教学目标,将采用以下几种教学方法:1.讲授法:讲解FPGA的基本原理、结构和设计方法。
2.案例分析法:分析具体的FPGA应用案例,让学生了解FPGA在实际工程中的应用。
3.实验法:安排FPGA实验,让学生动手实践,巩固所学知识。
4.讨论法:学生进行小组讨论,培养团队协作精神和沟通能力。
四、教学资源为了支持本课程的教学,将准备以下教学资源:1.教材:选用权威、实用的教材,如《FPGA原理与应用》。
2.参考书:提供相关的参考书籍,以便学生深入研究。
3.多媒体资料:制作PPT、视频等多媒体教学资料,丰富教学手段。
4.实验设备:准备FPGA开发板、编程器等实验设备,确保学生能够动手实践。
5.在线资源:推荐一些在线教程、论坛和学术资源,方便学生自主学习。
基于FPGA的通用异步收发器设计
串行通信要求的传输线少,可靠性高,传输距离远,被广泛应用于计算机和外设的数据交换。
通常都由通用异步收发器(UART)来实现串口通信的功能。
在实际应用中,往往只需要UART的几个主要功能,专用的接口芯片会造成资源浪费和成本提高。
随着FPGA/CPLD的飞速发展与其在现代电子设计中的广泛应用,FPGA/CPLD功能强大、开发过程投资小、周期短、可反复编程、保密性好等特点也越来越明显。
因此可以充分利用其资源,在芯片上集成UART功能模块,从而简化了电路、缩小了体积、提高了可靠性,而且设计时的灵活性更大,周期更短。
鉴于此本文提出了一种采用FPGA实现UART功能的方法,可以有效地解决上述问题。
1 UART的工作原理
UART(Universal Asynchronous Receiver Transmitter,通用异步收发器)是广泛使用的异步串行数据传输协议。
在串行通信中,数据以字节为单位的字节帧进行传送。
发送端和接收端必须按照相同的字节帧格式和波特率进行通信。
UART控制器所传输的一帧串行数据包括1位起始位(低电平)、5~8。
《FPGA设计与应用》实验指导书某某编武汉理工大学华夏学院2011年9月前言一、实验课目的数字电路与系统设计实验课是电子工程类专业教学中重要的实践环节,包括了ISE开发环境基本操作及FPGA的基本原理、基带传输系统的设计、Uart串口控制器电路的设计、PS/2接口的设计、VGA显示接口设计。
要求学生通过实验学会正确使用EDA技术,掌握FPGA器件的开发,熟练使用ISE开发环境,掌握Verilog语言的编程,掌握数字电路和系统的设计。
通过实验,使学生加深对课堂专业教学内容的理解,培养学生理论联系实际的能力,实事求是,严谨的科学作风,使学生通过实验结果,利用所学的理论去分析研究EDA技术。
培养学生使用Basys 2开发板的能力以及运用实验方法解决实际问题的能力。
二、实验要求:1.课前预习①认真阅读实验指导书,了解实验内容;②认真阅读有关实验的理论知识;③读懂程序代码。
2.实验过程①按时到达实验室;②认真听取老师对实验内容及实验要求的讲解;③认真进行实验的每一步,观察程序代码与仿真结果是否相符;④将实验过程中程序代码和仿真结果提交给老师审查;⑤做完实验后,整理实验设备,关闭实验开发板电源、电脑电源后方可离开。
3.实验报告①按要求认真填写实验报告书;②认真分析实验结果;③按时将实验报告交给老师批阅。
三、实验学生守则1.保持室内整洁,不准随地吐痰、不准乱丢杂物、不准大声喧哗、不准吸烟、不准吃东西;2.爱护公务,不得在实验桌及墙壁上书写刻画,不得擅自删除电脑里面的文件;3.安全用电,严禁触及任何带电体的裸露部分,严禁带电接线和拆线;4.任何规章或不按老师要求操作造成仪器设备损坏须论价赔偿。
目录实验一Uart通用串口接口的设计 (4)实验二PS/2接口的设计 (28)实验三VGA显示接口设计 (30)附录一 basys 2开发板资料 (36)实验一 Uart串口控制接口电路的设计一、实验目的1.掌握分频模块的设计方法。
1.通用异步收发器1.1通用异步收发器概述S5PV210的通用异步收发器(UART )提供四对独立的异步串行输入/输出(I / O)端口。
所有的端口操作基于中断或基于DMA的操作模式。
UART产生一个中断或DMA请求,将数据传输给CPU或者从CPU传输给UART 。
UART支持高达3Mbps比特率。
每个UART通道包含两个FIFO接收和发送数据:在ch0的256个字节,在ch1的64字节和在ch2和ch3 16个字节。
UART包括可编程波特率,红外(IR )发射器/接收器,一个或两个停止位插入, 5位, 6 位, 7位或8位数据宽度和奇偶校验。
每个UART包含一个波特率发生器,发送器,接收器和一个控制单元,如图1-1 。
波特率发生器采用PCLK或SCLK_UART 。
发射器和接收器包含FIFO和数据移位器。
要传输的数据被写入到Tx FIFO ,并复制到发送移位器。
然后,数据由发送数据引脚( TXDn )移出。
所接收的数据从接收数据引脚( RxDn )移位,并且从移位器复制到Rx FIFO。
1.2通用异步收发器的主要特点• RXD0 , TxD0, RXD1 , TXD1 ,RxD2 , TxD2, RXD3和TXD3带有基于DMA或基于中断的操作• UART通道0 ,1 ,2和3 具有IrDA 1.0• UART通道0具有256字节FIFO ,通道1具有64字节FIFO ,通道2和3具有16字节的FIFO• UART通道0 ,1和2具有 nRTS0 , nCTS0 , nRTS1 , nCTS1 , nCTS2和nRTS2的自动流控制功能•支持握手发送/接收。
图1-1UART的框图1.3 UART的说明以下各节描述的UART操作,如数据传输,数据接收,中断产生,波特率发生器,回环模式,红外模式和自动流控制1.3.1数据传输用于传输的数据帧是可编程的。
它由一个起始位,五至八个数据位,一个可选的奇偶性位,和一到两个停止位,由线路控制寄存器( ULCONn )指定。
目录一、技术规范 (3)1、设计完成的功能: (3)2、系统整体框图: (3)3、I/O管脚的描述: (3)4、验证和测试工具选择: (4)5、说明关键模块: (4)6、拟选用的FPGA类型: (4)二、FIFO总体设计方案 (5)系统功能描述: (5)电路结构图: (5)系统的总体输入输出设定 (6)系统时序分析: (6)关键模块设计分析: (7)三、FIFO验证方案 (8)FIFO功能: (8)1、概述: (8)2、预确认: (8)3、模块运行确认: (9)4、系统运行确认: (9)四、仿真激励代码 (10)五、电路设计FIFO源代码 (11)六、FPGA设计FIFO综合布局布线报告: (16)综合引脚分配: (16)电路布局布线: (16)七、时序仿真报告 (17)时序仿真波形: (17)八、FIFO下载代码和引脚分布 (17)系统输入输出引脚分布: (21)九、心得体会 (21)技术规范1、设计完成的功能:本实验完成的是8位异步FIFO的设计,其中写时钟100MHz,读时钟为5MHz,其中RAM的深度为256。
当写时钟脉冲上升沿到来时,判断写信号是有效,则写一个八位数据到RAM中;当读时钟脉冲上升沿到来时,判断读信号是有效,则从RAM中把一个八位数据读出来。
当RAM中数据写满时产生一个满标志,不能再往RAM再写数据;当RAM中数据读空时产生一个满标志,不能再从RAM读出数据。
2、系统整体框图:3、I/O管脚的描述:4、验证和测试工具选择:Modelsim SE 6.1f进行前仿真和后仿。
在软件QuartusII中进行综合。
5、说明关键模块:对控制输入的读写地址要进行设计,以便在写满或是读空只产生一个标志,以此来实现对FIFO的缓冲的控制。
也就是读地址加1与写地址相等则为读空,产生读空标志;写地址加1与读地址相等则为读空,产生写满标志6、拟选用的FPGA类型:ep1cq240c8nFIFO总体设计方案系统功能描述:本实验完成的是8位异步FIFO的设计,其中写时钟100MHz,读时钟为5MHz,其中RAM的深度为256。
江苏科技大学本科毕业设计(论文)学院专业学生姓名班级学号指导教师二零壹叁年六月江苏科技大学本科毕业论文基于FPGA的异步FIFO设计Asynchronous FIFO design based on FPGA摘要在现代集成电路芯片中,随着设计规模的不断扩大,一个系统往往包含多个时钟,如何进行异步时钟间的数据传输成为了一个很重要的问题。
异步FIFO (First In First Out)是一种先进先出电路,可以在两个不同的时钟系统间进行快速准确的数据传输,是解决异步时钟数据传输问题的简单有效的方案。
异步FIFO 在网络接口、数据采集和图像处理等方面得到了十分广泛的应用,由于国内对该方面研究起步较晚,国内的一些研究所和厂商开发的FIFO电路还远不能满足市场和军事需求。
由于在异步电路中,时钟间的周期和相位完全独立,以及亚稳态问题的存在,数据传输时的丢失率不为零,如何实现异步信号同步化和降低亚稳态概率以及正确判断FIFO的储存状态成为了设计异步FIFO电路的难点。
本课题介绍了一种基于FPGA的异步FIFO 电路设计方法。
课题选用Quartus II软件,在Cyclone II 系列的EP2C5T144C8N芯片的基础上,利用VHDL 硬件描述语言进行逻辑描述,采用层次化、描述语言和图形输入相结合的方法设计了一个RAM深度为128 bit,数据宽度为8 bit的高速、高可靠的异步FIFO电路,并对该电路功能进行时序仿真测试和硬件仿真测试。
关键词:异步FIFO;同步化;亚稳态;仿真测试AbstractIn modern IC chips, with the continuous expansion of the scale of design, a system always contains several clocks. How to transmit data between the asynchronous clocks become a very important problem.Asynchronous FIFO (First In First Out) is a first-in, first-out circuit, it can transmit data between two diffent clock systems fastly and accurately, it is also a simple and effective solution to solve the problem of asynchronous clock data transfer. The asynchronous FIFO has a very wide range of applications in network interface, data acquisition and image processing.But because of the aspect of a late start, some domestic research institutes and manufacturers which research the FIFO circuit also can not meet the needs of the market and the military.In the asynchronous circuit, because of that the clock cycle and phase is completely independent, and the presence of metastability problems, the loss rate of data transmission is not zero. How to implement asynchronous signal synchronization, reduce the probability of metastability and judge the state of the FIFO storage correctly become a difficult problem while designing the asynchronous FIFO circuit. This paper introduces a method of asynchronous FIFO circuit design based on FPGA. This topic selects Quartus II software, the Cyclone II family EP2C5T144C8N chip, based on the use of VHDL hardware description language for logical descriptions, using the method of combining hierarchical, description language and graphical input ,This topic designs a high-speed, highly reliable asynchronous FIFO circuit as the RAM depth is 128 bit and the data width is 8 bit, and tests the circuit function with timing and software simulation.Keywords:Asynchronous FIFO; Synchronization; Metastability; simulation testing目录第一章绪论 (1)1.1 FPGA简介 (1)1.2 异步FIFO简介 (1)1.3 国内外研究现状及存在的问题 (1)1.3.1 研究现状 (1)1.3.2 存在问题 (2)1.4 本课题主要研究内容 (3)第二章异步FIFO设计要求及基本原理 (4)2.1 设计要求 (4)2.2 异步FIFO基本原理 (5)2.3 异步FIFO设计难点 (5)2.4 系统设计方案 (6)2.5 异步FIFO验证方案 (7)2.5.1 验证复位功能 (7)2.5.2 验证写操作功能 (7)2.5.3 验证读操作功能 (7)2.5.4 验证异步FIFO电路整体功能 (7)第三章模块设计与实现 (8)3.1 格雷码计数器模块 (8)3.2 同步模块 (8)3.3 格雷码∕自然码转换模块 (9)3.4 空满标志产生模块 (10)3.5 双端口RAM (13)第四章时序仿真与实现 (15)4.1 模块整合 (15)4.2 时序仿真及功能测试 (17)4.2.1 复位功能软件仿真与测试 (17)4.2.2 写操作功能时序仿真与测试 (17)4.2.3 读操作功能时序仿真与测试 (18)4.2.4 异步FIFO电路整体功能软件仿真与测试 (18)4.2.5 时序仿真结果总结 (19)第五章硬件仿真与实现 (20)5.1 外部电路焊接 (20)5.2 引脚分配 (21)5.3 调试电路设计 (24)5.3.1 调试电路介绍 (24)5.3.2 异步时钟产生模块 (25)5.3.3 伪随机数据队列产生模块 (25)5.3.5 调试电路引脚分配 (26)5.3.6 调试电路硬件仿真 (27)5.4 异步FIFO电路硬件仿真 (28)5.4.1 复位功能硬件仿真与测试 (29)5.4.2 写操作功能硬件仿真与测试 (30)5.4.3 读操作功能硬件仿真与测试 (30)5.4.4 异步FIFO硬件电路整体功能软硬件仿真与测试 (31)5.4.5 硬件仿真结果总结 (32)结论 (33)致谢 (34)参考文献 (35)附录 (36)第一章绪论1.1 FPGA简介FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在CPLD、PAL、GAL等可编程器件的基础上进一步发展的产物[10]。
通用异步串行接口的VHDL实用化设计作者:杨晓斌 赵花荣 赵明生转贴自:微计算机信息摘要:通用异步串行接口(Universal Asynchronous Receiver Transmitter,UART)在通信、控制等领域得到了广泛应用。
根据UART接口特点和应用需求,以提高VHDL设计的稳定性和降低功耗为目标,本文讨论了UART接口中时钟域划分、时钟分频、亚稳态、同步FIFO设计等问题和解决方案。
关键词:通用异步串行接口VHDL 亚稳态现场可编程逻辑阵列1 引言FPGA从实现粘合逻辑逐步发展成为设计平台的核心,在电子、通信以及航空航天等领域得到了广泛应用。
本人最近实现的中频软件无线电硬件平台,就以FPGA为核心,实现上变频、下变频等中频数字信号处理,并且构成A/D/A、DSP 和ARM模块之间的通信中心。
这种以FPGA为核心的架构使得硬件平台结构灵活,具有可重构性,为软件无线电的各种算法分配方案提供了有力支撑。
除了和TMS320C6416之间的数据流采用EMIF接口外,FPGA的其它接口均采用UART。
为了软件开发和移植的便利,UART设计要做到兼容ST16C550的功能。
稳定可靠则是作为软件无线电硬件平台关键接口的基本要求。
考虑到嵌入式系统的特点,在设计中应尽量降低功耗。
本文围绕这些目标,介绍了在UART 实用化设计中所遇到的一些重要问题、解决方案以及最终结果。
2 UART及ST16C550概述UART是广泛使用的串行数据传输协议,它在收发分离的串行链路上进行全双工异步通信。
发送过程接收来自数据总线上的并行数据,按照低位序方式并串转换,然后根据控制寄存器的设置生成串行数据流;相应的,接收过程把串行数据流转换成并行数据,产生中断以及状态信息,并对数据传输过程中的异常进行处理。
ST16C550是广泛使用的一款UART接口芯片,是NS16C550的改进版本。
它收发均带有16字节的FIFO,可以通过设定波特率设置寄存器来进行收发时钟的分频控制,传输速率从50bps到1.5Mbps。
基于FPG A/CP LD 的通用异步通信接口UART 的设计The Design of UART (Universal Asynchronous Receiver Transmitter )based on FPG A/CP LD姜 宁3 范多旺JIANG Ning F AN Duo 2wang摘 要 UART (通用异步接收发送设备)是一种短距离串行传输接口。
在数字通信和控制系统中得到广泛应用。
FPG A/CP LD 是大规模集成电路技术发展的产物,是一种半定制的集成电路。
结合计算机软件技术(E DA技术)可以快速、方便地构建数字系统。
本文介绍一种采用可编程逻辑器件FPG A/CP LD 实现UART 的方法,将UART 的核心功能集成到FPG A/CP LD 上,本设计包含UART 的发送模块、接收模块和波特率发生器,所有功能的实现全部采用VH D L 硬件描述语言来进行描述。
设计、综合、仿真在QUART USII 软件开发环境下实现。
关键词 UART VH D L FPG A/CP LD 仿真 Abstract UART (Universal Asynchronous Receiver T ransmitter )is a short 2haul serial communication inter face which is applied widely in digital communication and control system.The result of LSI (Large Scale Integration )is FP 2G A/CP LD ,it is the attribute of semi 2custom Integrate Circuit ,combining E DA with FPG A/CP LD will construct the digi 2tal system quickly and expediently.This article introduces a method to design uart based on the programmable logic de 2vice FPG A/CP LD.The core function of UART is integrated in FPG A/CP LD.This design includes the T ransmitter Log 2ic 、the Receiver Logic and the Baudrate G enerator.All function are given by VH D L.The im plementation of design 、sim 2ulation 、synthesis is the s oftware of QUART USII.K eyw ords UART VH D L FPG A/CP LD S imulation3光电技术与智能控制教育部重点实验室兰州交通大学自动控制研究所 甘肃 兰州 730070 随着E DA 技术的发展,FPG A/CP LD 已经在许多方面得到了广泛应用,而UART (Universal Asynchronous Receiver T rans 2mitter 通用异步收发器)是广泛使用的串行数据传输协议。
课程设计任务书学生:瞿子敬专业班级:通信1104指导教师:适工作单位:信息工程学院题目:FPGA通用异步收发器设计课程设计目的:1.熟练使用VHDL语言进行电路设计;2.能够运用相关软件进行模拟分析;3.掌握基本的文献检索和文献阅读的方法;4.提高正确的撰写论文的基本能力。
课程设计容和要求1.容:FPGA通用异步收发器设计2.要求:使用VHDL语言完成电路设计,并在此基础上进行仿真,得到正确结果。
初始条件QuartusⅡ仿真平台时间安排1.方案设计,1天;2.软件设计,2天;3.系统调试,1天;4.答辩,1天。
指导教师签名:年月日系主任(或责任教师)签名:年月日目录摘要 (I)Abstract (II)1. UART简介 (1)1.1 UART基本特点 (1)1.2 FPGA URAT系统组成 (2)2. 模块设计 (3)2.1 顶层模块 (3)2.1 波特率发生器 (4)2.3 UART接收器 (4)2.3.1 接收器简介 (4)2.3.2 UART接收器的接收状态机 (5)2.4 URAT发送器 (7)2.4.1 发送器简介 (7)2.4.2 发送状态机 (7)3. 程序设计与仿真 (9)3.1 顶层程序 (9)3.2 波特率发生器程序 (11)3.3 UART发送器程序 (13)3.4 UART接收器程序 (17)4. 心得体会 (22)5. 参考文献 (23)摘要UART(Universal Asynchronous Receiver Transmitter通用异步收发器)是一种应用广泛的短距离串行传输接口。
常常用于短距离、低速、低成本的通讯中。
8250、8251、NS16450等芯片都是常见的UART器件。
基本的UART通信只需要两条信号线(RXD、TXD)就可以完成数据的相互通信,接收与发送是全双工形式。
TXD是UART发送端,为输出;RXD是UART接收端,为输入。
关键词:UART,FPGA,VHDL,电路通信AbstractUART (Universal Asynchronous Receiver Transmitter) is a kind of widely used short serial transmission interface. Often used in short distance, low speed, low cost of communications. 8250, 8251, NS16450, etc are common UART chip devices.Basic UART communication only need two signal lines (RXD, TXD) can complete data communication, sending and receiving is full duplex form. TXD is UART transmitter for output; RXD is UART receiver for input.Keywords:UART,FPGA,VHDL,Circuit Communication1. UART简介1.1 UART基本特点(1)在信号线上共有两种状态,可分别用逻辑1(高电平)和逻辑0(低电平)来区分。
在发送器空闲时,数据线应该保持在逻辑高电平状态。
(2)起始位(Start Bit):发送器是通过发送起始位而开始一个字符传送,起始位使数据线处于逻辑0状态,提示接受器数据传输即将开始。
(3)数据位(Data Bits):起始位之后就是传送数据位。
数据位一般为8位一个字节的数据(也有6位、7位的情况),低位(LSB)在前,高位(MSB)在后。
(4)校验位(parity Bit):可以认为是一个特殊的数据位。
校验位一般用来判断接收的数据位有无错误,一般是奇偶校验。
在使用中,该位常常取消。
(5)停止位:停止位在最后,用以标志一个字符传送的结束,它对应于逻辑1状态。
(6)位时间:即每个位的时间宽度。
起始位、数据位、校验位的位宽度是一致的,停止位有0.5位、1位、1.5位格式,一般为1位。
(7)帧:从起始位开始到停止位结束的时间间隔称之为一帧。
(8)波特率:UART的传送速率,用于说明数据传送的快慢。
在串行通信中,数据是按位进行传送的,因此传送速率用每秒钟传送数据位的数目来表示,称之为波特率。
如波特率9600=9600bps(位/秒)。
UART的数据帧格式为:1.2 FPGA URAT系统组成FPGA UART由三个子模块组成:(1)波特率发生器;(2)接收模块;(3)发送模块;模块分布如图所示:图1.1 UART模块2. 模块设计模块设计分为顶层模块、波特率发生器、UART接收器、UART发送器四部分。
2.1 顶层模块异步收发器的顶层模块由波特率发生器、UART接收器和UART发送器构成。
UART发送器的用途是将准备输出的并行数据按照基本UART帧格式转为TXD信号串行输出。
UART接收器接收RXD串行信号,并将其转化为并行数据。
波特率发生器就是专门产生一个远远高于波特率的本地时钟信号对输入RXD不断采样,使接收器与发送器保持同步。
顶层模块电路图:图2.1 顶层模块电路2.1 波特率发生器波特率发生器实际上就是一个分频器。
可以根据给定的系统时钟频率(晶振时钟)和要求的波特率算出波特率分频因子,算出的波特率分频因子作为分频器的分频数。
波特率分频因子可以根据不同的应用需要更改。
2.3 UART接收器2.3.1 接收器简介由于串行数据帧和接收时钟是异步的,由逻辑1转为逻辑0可以被视为一个数据帧的起始位。
然而,为了避免毛刺影响,能够得到正确的起始位信号,必须要求接收到的起始位在波特率时钟采样的过程中至少有一半都是属于逻辑0才可认定接收到的是起始位。
由于部采样时钟bclk周期(由波特率发生器产生)是发送或接收波特率时钟频率的16倍,所以起始位需要至少8个连续bclk周期的逻辑0被接收到,才认为起始位接收到,接着数据位和奇偶校验位将每隔16个bclk周期被采样一次(即每一个波特率时钟被采样一次)。
如果起始位的确是16个bclk周期长,那么接下来的数据将在每个位的中点处被采样2.3.2 UART接收器的接收状态机图2.2 接受状态机状态图五个状态分别为R_START(等待起始位),R_CENTER(求中点),R_WAIT (等待采样),R_SAMPLE(采样),R_STOP(停止位接收)。
R_START状态:当UART接收器复位后,接收状态机将处于这一个状态。
在此状态,状态机一直在等待RXD的电平跳转,从逻辑1变为逻辑0,即起始位,这意味着新的一帧UART数据帧的开始,一旦起始位被确定,状态机将转入R_CENTER状态。
状态图中的RXD_SYNC信号是RXD的同步信号,因为在进行逻辑1或逻辑0判断时,不希望检测的信号是不稳定的,所以不直接检测RXD信号,而是检测经过同步后的RXD_SYNC信号。
R_CENTE状态:对于异步串行信号,为了使每一次都检测到正确的位信号,而且在较后的数据位检测时累计误差较小,显然在每位的中点检测是最为理想的。
在本状态,就是由起始位求出每位的中点,通过对bclk的个数进行计数(RCNT16),但计数值不是想当然的“1000”,要考虑经过一个状态,也即经过了一个bclk周期,所希望得到的是在采样时1/2位。
另外,可能在R_START状态检测到的起始位不是真正的起始位,可能是一个偶然出现的干扰尖脉冲(负脉冲)。
这种干扰脉冲的周期是很短的,所以可以认为保持逻辑0超过1/4个位时间的信号一定是起始位。
R_WAIT状态:当状态机处于这一状态,等待计满15个bclk,在第16个bclk是进入R_SAMPLE状态进行数据位的采样检测,同时也判断是否采集的数据位长度已达到数据帧的长度(FRAMELEN),如果到来,就说明停止位来临了。
FRAMELEN在设计时是可更改的(使用了Generic),在本设计中默认为8,即对应的UART工作在8位数据位、无校验位格式。
R_SAMPLE状态:即数据位采样检测,完成后无条件状态机转入R_WAIT 状态,等待下次数据位的到来。
R_STOP状态:无论停止位是1还是1.5位,或是2位,状态机在R_STOP 不具体检测RXD,只是输出帧接收完毕信号(REC_DONE<=‘1’),停止位后状态机转回到R_START状态,等待下一个帧的起始位。
2.4 URAT发送器2.4.1 发送器简介发送器只要每隔16个bclk周期输出1个数据即可,次序遵循第1位是起始位,第8位是停止位。
在本设计中没有校验位,但只要改变Generic参数FrameLen,也可以加入校验位,停止位是固定的1位格式。
2.4.2 发送状态机五个状态分别为X_IDLE(空闲),X_START(起始位),X_WAIT(移位等待),X_SHIFT(移位),X_STOP(停止位)。
X_IDLE状态:当UART被复位信号复位后,状态机将立刻进入这一状态。
在这个状态下,UART的发送器一直在等待一个数据帧发送命令XMIT_CMD。
XMIT_CMD_P信号是对XMIT_CMD的处理,XMIT_CMD_P是一个短脉冲信号。
这时由于XMIT_CMD是一个外加信号,在FPGA之外,不可能对XMIT_CMD 的脉冲宽度进行限制,如果XMIT_CMD有效在UART发完一个数据帧后仍然有效,那么就会错误地被认为,一个新的数据发送命令又到来了,UART发送器就会再次启动UART帧的发送,显然该帧的发送是错误的。
在此对XMIT_CMD进行了脉冲宽度的限定,XMIT_CMD_P就是一个处理后的信号。
当XMIT_CMD_P=‘1’,状态机转入X_START,准备发送起始位。
X_START状态:在这个状态下,UART的发送器一个位时间宽度的逻辑0信号至TXD,即起始位。
紧接着状态机转入X_WAIT状态。
XCNT16是bclk的计数器X_WAIT状态:同UART接收状态机中的R_WAIT状态类似。
X_SHIFT状态:当状态机处于这一状态时,实现待发数据的并串转换。
转换完成立即回到X_WAIT状态。
X_STOP状态:停止位发送状态,当数据帧发送完毕,状态机转入该状态,并发送16个bclk周期的逻辑1信号,即1位停止位。
状态机送完停止位后回到X_IDLE状态,并等待另一个数据帧的发送命令。
图2.3 发送状态机状态图3. 程序设计与仿真3.1 顶层程序--文件名:top.vhd。
--功能:顶层映射。
library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity top isPort (clk32mhz,reset,rxd,xmit_cmd_p_in:in std_logic;--总的输入输出信号的定义rec_ready,txd_out,txd_done_out:out std_logic;txdbuf_in:in std_logic_vector(7 downto 0); --待发送数据输入rec_buf:out std_logic_vector(7 downto 0)); --接收数据缓冲end top;architecture Behavioral of top iscomponent recieverPort (bclkr,resetr,rxdr:in std_logic;r_ready:out std_logic;rbuf:out std_logic_vector(7 downto 0));end component;component transferPort (bclkt,resett,xmit_cmd_p:in std_logic;txdbuf:in std_logic_vector(7 downto 0);txd:out std_logic;txd_done:out std_logic);end component;component baudPort (clk,resetb:in std_logic;bclk:out std_logic);end component;signal b:std_logic;beginu1:baud port map(clk=>clk32mhz,resetb=>reset,bclk=>b); --顶层映射u2:recieverport map(bclkr=>b,resetr=>reset,rxdr=>rxd,r_ready=>rec_ready,rbuf=>rec_buf);u3:transferport map(bclkt=>b,resett=>reset,xmit_cmd_p=>xmit_cmd_p_in,txdbuf=>txdbuf_in,txd=>txd_out,txd_done=>txd_done_out);end Behavioral;顶层程序仿真:图3.1 顶层程序仿真3.2 波特率发生器程序--文件名:baud.vhd.--功能:将外部输入的32MHz的信号分成频率为153600Hz的信号。