用vhdl设计专用串行通信芯片

用vhdl设计专用串行通信芯片

ID:25190512

大小:49.00 KB

页数:4页

时间:2018-11-18

用vhdl设计专用串行通信芯片_第1页
用vhdl设计专用串行通信芯片_第2页
用vhdl设计专用串行通信芯片_第3页
用vhdl设计专用串行通信芯片_第4页
资源描述:

《用vhdl设计专用串行通信芯片》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、用VHDL设计专用串行通信芯片

2、第12CPLD内部功能框图及设计CPLD内部结构主要由接口控制单元和SRT组成,这里主要介绍一下SRT的结构和功能模块(见图3)。由于选用的UART(通用异步收发器)与INS8250兼容,为简化主控单元访问外部通信芯片的程序的编写,统一操作流程,在SRT的设计上尽量模仿INS8250的结构。本设计采用模块化设计。按功能将SRT内部结构发分为5个模块,每一个模块对应一个VHDL的设计文件。这样设计的好处是有利于各功能模块的编写和调试,从而降低了整个SRT的调试难度,提高了软件的可维护性及可读性。下面给出各个设计文件的外功能简介(对于其中几个重要的模块还

3、列出了端口描述和部分实现代码):(1)SRTCRTL.VHDSRTCRTL.VHD作为SRT的控制模块,负责地址译码,当片选信号有效时将数据线上的数据写入相应的寄存器。SRT芯片内部共设有接收缓存器、发送保持器、线路控制寄存器、除数寄存器(高低8位各1个)、自环控制寄存器等6个控制寄存器,每个寄存器都被分配了1个地址,通过对相应地址进行读写,CPU可完成数据发送、接收、自环及芯片参数设置等操作。(2)LOOP.VHD本模块的功能是根据用户的指令,对芯片本身功能进行测试。用户首先将芯片设置为自环状态,使芯片内部发送数据线与直接接收数据线短接;再通过向发送保持器写入特定的数据,与接收缓

4、存器中读出的数据进行比较,看两者是否相同,用户即可判断芯片是否工作正常。500)this.style.ouseg(this)">(3)CLKGEN.VHDCLKGEN.VHD是波特率发生器模块,用来产生发送同步的时钟信号doclk。它将除数寄存器高低各8位共16位数据作为除数,对外部2MHz的时钟源进行分频。用户可通过修改除数寄存器的值动态地改变数据传输速率,因此操作方便、灵活。(4)RBR.VHDRR.VHD作为整个芯片的接收模块,其中包括接收缓存器、接收数据同步、串/并转换。端口描述如下:entityrbrisport(diclk:inSTD_LOGIC;--接收数据同步时钟,

5、由发方提供rrbr:在STD_LOGIC;--读接收缓存器信号rsrbr:inSTD_LOGIC;--接收缓存器清零信号dbus:outSTD_LOGIC_VECTOR(7doouseg(this)">endrbr;当接收缓存器中无数据时,ren信号有效,通知发送方传数据。然后根据dilck对di信号采样,一旦缓存器满,ren无效,dr有效,通知CPU读数。仿真波形如图4所示。部分代码如下:process(rsrbr,diclk)--serialdatatoparalleldatavariablel,m:integerrange0to8;beginifrsrbr='1'thens_

6、p<="00000000";m:=0;ef<='1';elsifdiclk'eventanddiclk='1'thenl:=7-m;s_p(1)<=di;m:=m+1;Ifm=8thenm:=0;ef<='0';endif;endif;ifrrbr='1'thendbus>=s_p;ef<='1';elsedbus<="ZZZZZZZZ";endif;endprocess;(5)<=0;1:=7;sef<='1';elsif<=m+1;l:=1-1;ifm=7thenm<=0;1:=7;esf=<='1';en

7、dif;endif;endif;endprocess;500)this.style.ouseg(this)">3实现难点及使用VHDL应注意的一些问题由于VHDL语言是描述硬件行为的,相对其它开发软件的高级语言而言,在编程过程中有一些特殊性,所以经常会出现语法正确但无法综合的问题。其原因多半因为编程者对硬件内部的工作原理了解不够,写出的代码硬件无法实现。通过这块芯片的设计,在此总结出一些应注意的问题,供大家参考:(1)在一个进程中只允许一个信号上升沿作为触发条件。(2)信号值改变后要经过一个小的延时才能生效,同个信号不能在多个进程中赋值(因为多个信号源不能同时对同一个信号驱动)。(

8、3)时序电路和组合电路最好不要在同一个进程中,以资源。(4)一个功能模块最好按上升沿信号分多个进程完成,各进程间用信号联系。(5)同一个信号在进程中的值改变后,要注意该值改变前后该进程中其它变量的变化,避免逻辑死锁。(6)在顺序语句中,注意信号因赋值后需延时改变而与变量的不同。(7)设计双向三态数据线时,内部数据线最好读写分开。与外部结合时,不同读数据线之间,读写数据线之间应使用三态门,且由读信号控制。本设计由于采用了VHDL语言作为输入方式并细合可编程逻辑门阵列CP

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。