EDA串口通信概要_第1页
EDA串口通信概要_第2页
EDA串口通信概要_第3页
EDA串口通信概要_第4页
EDA串口通信概要_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、EDA技术应用期末论文题目基于VHDL串口设计学生姓名:学号:班级:1引言1.2系统模块设计2.2.1层次划分2.2.2波特率发生器2.2.3发送模块4.2.4接受模块43程序设计.5.4总结8 摘要设计基于VHDL的波特率可控RS232串口,通过串口调试工具实现向 PC机的通信。波特率为每秒中发送的字节数,这次设计中以10位为一帧(无奇偶校验位)波特率(clk_div参数设定)设为4800进行仿真。设计的主要内容分为波 特率发生器,发送模块和接收模块。采用了自顶向下的思路进行设计。1引言随着电子技术的发展,现场可编程门阵列FPGA和复杂可编程逻辑器件 CPLD的出现,使得电子系统的设计者利用

2、与器件相应的电子CAD软件,在实验室里就可以设计自己的专用集成电路ASIC器件。这种可编程ASIC不仅使设计的产品达到小型化、集成化和高可靠性,而且器件具有用户可编程特性,大大缩短了设计周期,减少了设计费用,降低了设计风险。目前数字系统的设计可以直接面向用户需求,根据系统的行为和功能要求,自上至下地逐层完成相应的描述、综合、优化、仿真与验证,直到生成器件,实现电子设计自动化。 其中电子设计自动化(EDA )的关键技术之一就是可以用硬件描述语言( HDL )来描述硬件电路。 VHDL是用来描述从抽象到具体级别硬件的工业标准语言,它是由美国国防部在80年代开发的HDL,现在已成为IEEE承认的标准

3、硬件描述语言。VHDL支持硬件的设计、验证、综合和测试,以及硬件设计数据的交换、维护、修改和硬件的实现,具有描述能力强、生命周 期长、支持大规模设计的分解和已有设计的再利用等优点。利用VHDL这些优点和先进的EDA工具,根据具体的实际要求,我们可以自己来设计串口异步通信电路。下图1是整体设计框图,图2是外围电路图PCI-ARTR I IHEADER2X2TI3GNDR4ILKLT4-CI +vcc=> Cl -v*匚斟Vtjout->R1OUTR1EW <TZNT2O(JT ;n>R2OUTR2CH <EF3232E-广T5VCC11)48图2外围电路2系统模块设

4、2.1层次模块划分模块划分为二层,自顶向下分别是顶层模块、控制器子模块。顶层描述了整个系统的功能和运行;控制器子模块实现系统中各个独立而完整的功能部分。每个层次可用一个或多个具体模块加以实现。顶层模块:集成子模块功能,控制子模块的连接和耦合信号。子模块: 实现顶层模块的描述,包括的功能主要是串行发送电路的波特率发生器,发送模块和接收模块地区、接受模块的分频部分和验收。发送电路的波特率发生器,将16KHZ的时钟分频为4800Hz的时钟。 输入:16KHZ晶振信号。输出:送往发送模块的 4800Hz的信号。发送模块。向PC机发送信号。输入:4800Hz时钟信号、发送数据。输出:输入数据的串行输出。

5、接收电路的波特率发生器和采样时钟的设计,提高接收的准确性,减少误码率。 输入:16KHZ晶振信号。出:送往接受模块的信号和检验模块。接收模块,检测接收端,若检测到低电平则开始接收数据输入:发送的数据。输出:接收的数据。顶层将个各部分连接起来 2.2波特率(分频)模块设计和仿真图3为波特率程序的 RTL,图4为其仿真图。要产生 4800波特率,要有一个不低于4800Hz的时钟才可以。为产生高精度的时钟,选16KHZ的晶振来提供外部时钟。 对于16KHz 时钟,需要设计一个13进制的分频器来产生 4800波特率的时钟信号。图42.3发送模块根据采用的帧格式,需要发送的数据为10位(1位开始位、8位

6、数据位、1位停止位),在 发送完这10位后,就应该停止发送,并使发送端电平处于逻辑1,然后等候下次的发送。图5为接受模块RTL图,图6为其仿真图。其中,Send_data(O to 9)表示需要发送的数据帧 在发送每一帧之前,首先给输入端en 一个低电平脉冲,让电路复位 (count置0),然后开始发送。变量count在进程中用来记录发送的数据数目,当数据帧发送完后,发送端就一直发送停止位(逻辑1)。G|l11- j-二 九 -'. rr n - r>-j tic - -:':- <t : -vnil.vi"們;欝:o Ed>t 琢叶 Project

7、 Asignnnents Accessing TooH Wndow 阳卩D R S 旨f* fc rJ com救屮事瞬锣Z- A呼*"4O 辱醪Q U| "3 Wdvelaml.vwlSinujldhcn Waveforms呵Tan-iixFAVfelud J PE14 5514甲3 nxJM.h 1 h JrTTTTTTTTT rTTT rT TT rL rL rL rT nL rLrLTLTLTT<UiQ. AtaA 00(IJMi 13xtrii a1A 1曲 -k-><For Helpr press F1f*D|ide-CAPErd訂Time Oa

8、r10 99ra Irfleiv14.95 ns: HjjJPajiier2.3接受模块接收电路比发送电路要复杂的多,接收电路要时实检测起始位的到来,一旦检测到起始位 到,就要将这一帧数据接收下来。串行接收电路首先要能判断接收数据的到来 ,即每一帧的开始,然后对数据进行3次采样,最后判决输出。为简化设计,帧格式仍然采用:1位开始位+ 8位 数据位+ 1位停止位。接收模块的功能:时时检测线路,当线路产生下降沿时,即认为线路有数据传输,启动接收数据进程进行接收,按从低位到高位接收数据。图7是接受电路RTL图,图8为其仿真图。ftion Regicirt - Sinrui怙bon WaKformfl

9、ri 公 0 s卜:wn M«fVfrT nM View Project Aaijmiwite Piro«gting Ikw# Wfindag 刚庐图8对上图分析看出,接收模块接收到的数据与发送模块发送的数据相一至,每接收到一个数据都有一个读取数据指示,接收模块得到正确验证3程序设计1发送波特率控制程序library ieee;use ieee.std_logic_1164.all;useieee.std_logic_arith.all;use ieee.std_logic_ un sig ned.all;en tity clk_div isport(clk : in st

10、d_logic;clk_div13 : out std_logic);end ;architecture clk_div_arc of clk_div issig nal count : std_logic_vector(7 dow nto 0);sig nal clk_temp : std_logic;beg inprocess(clk)beg inif (clk'eve nt and clk='1')then if(cou nt <= "00001101")then count <= (others =>'0')

11、;clk_temp <= not clk_temp ;else count <= count +1 ;end if;end if;end process;clk_div13 <= clk_temp ;end clk_div_arc ;2发送电路程序library ieee;use ieee.stdo gic_1164.all;en tity com isport(clk,e n:in std_logic;Sen d_data:i n std_logic_vector(9 dow nto 0);serial:out std_logic);end ;architecture co

12、m_arc of com is beg in process(clk ) variable coun t:i nteger range 0 to 9 :=0;beg inif en = 'O' the n coun t:=0;serial<='1'elsif risin g_edge(clk)the n if coun t=9 the n serial<=Se nd_data(9); elseserial<=Se nd_data(co un t);coun t:=co un t+1;end if;end if;end process;end c

13、om_arc;3接受电路波特率控制程序library ieee;use ieee.stdo gic_1164.all;en tity coun t13 is port(clk,e n:in std_logic;Clock1,Clock3:out stdo gic);end ;architecture coun t13_arc of coun t13 isbeg inprocess(clk,e n)variable coun t:i nteger range 0 to 13 :=0; beg inif en='O' the n nu II;elsif (ris in g_edge

14、(clk)then coun t:=co un t+1;if cou nt=13 the n Clock1<='1'coun t:=0; elseClock1<='0'end if;if (co un t=3 or coun t=6 or coun t=9 )then Clock3 <= '1'elseClock3 <= '0'end if;end if;end process;end coun t13_arc;4接收电路程序library ieee;use ieee.stdo gic_1164.all;e

15、n tity com_receive10 isport(com,clr,clk1,clk3:in std_logic;Q:out stdo gic_vector(0 to 9);Valid:out stdo gic);end ;architecture com_receive10_arc of com_receive10 isSignal En able:stdo gic :='1'Sig nal Hold:stdogic :='0'Signal N:std_logic_vector(0 to 2) :="000"begi nValid<

16、;=E nable and Hold;process(clk1,clr)variable Num:i nteger range 0 to 9 :=0;beg inif clr='0'the nEn able<='1'Num :=0;Q<="0000000000"elsif (risi ng_edge(clk1) the nQ(Num)v=(N(0) and N(1) or (N(1) and N(2) or (N(0) and N(2);if Num=9 the n En able<='0'Num:=0;el

17、se Num := Num+1;end if;end if;end process;process(clk3,clr)variable m:i nteger range 0 to 2 :=0;beg inif clr='O' the n m:=0;elsif(risi ng_edge(clk3) the n N(m)v=com;if m=2 the n m:=0;else m:=m+1;end if;end if;end process;process(clr,com) beg in if clr='0' the n Hold<='0' elsif falli ng_edge(com) the n Hold<='1' end if;end process;end com_receive10_arc;总结:通过这次EDA串

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论