用VHDL设计专用串行通信芯片.docVIP

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
用VHDL设计专用串行通信芯片.doc

用VHDL设计专用串行通信芯片 摘要:一种专用串行同步通信芯片(该芯片内部结构和操作方式以INS8250为参考)的VHDL设计及 CPLD实现,着重介绍了用VHDL及CPLD设计专用通信芯片的开发流程、实现难点及应注意的问题。 ??? 关键词:VHDL FPGA CPLD UART 统计时分复用器 在通信系统中,通信芯片是整个硬件平台的基础,它不仅 完成OSI物理层中的数据发送和接收,还能根据传输方式和协议的不同实现不同的数据校验方式及数据组帧格式。 目前,许 多厂商都提供通用的串行通信芯片,其传输方式分为同步方式和异步方式。其中,异步芯片大多与INTEL的8250芯片兼容;而同步方式,由于一般涉及到所 支持的传输协议(BSC、HDLC、SDLC等),所以当用户要求应用特定的同步传输协议时,往往需要设计专用的SRT(同步收发器)。以前,大多采用通 用的逻辑元器件进行设计,这导致了设计和调试过程冗长、系统稳定性不高,非常不便。如今,随着以FPGA和CPLD为代表的可编程ASIC技术的日趋成熟 和完善,用户完全可以根据自己的要求,以EDA技术作为开发手段,用一块FPGA或CPLD设计出符合自己需要的芯片。本文以开发统计时分复用器中的专用 同步收发芯片为例,介绍整个芯片的开发流程。 1 统计时分复用器系统功能及模块组成 统计时分复用器完成7路异步数据和1路同步数据的复接工作,其功能框图如图1所示,同步串口传输协议如图2所示。由于传输距离 较近且路数不多,功能相对简单。出于系统功耗和成本的考虑,将这个专用的SRT和整个接口控制单元集成到一块CPLD(XC95144)中。 2 CPLD内部功能框图及设计 CPLD内部结构 主要由接口控制单元和SRT组成,这里主要介绍一下SRT的结构和功能模块(见图3)。由于选用的UART(通用异步收发器)与INS8250兼容,为简 化主控单元访问外部通信芯片的程序的编写,统一操作流程,在SRT的设计上尽量模仿INS8250的结构。 本设计采用 模块化设计。按功能将SRT内部结构发分为5个模块,每一个模块对应一个VHDL的设计文件。这样设计的好处是有利于各功能模块的编写和调试,从而降低了 整个SRT的调试难度,提高了软件的可维护性及可读性。下面给出各个设计文件的外功能简介(对于其中几个重要的模块还列出了端口描述和部分实现代码): (1)SRTCRTL.VHD SRTCRTL.VHD作为SRT的控制模块,负责地址译 码,当片选信号有效时将数据线上的数据写入相应的寄存器。SRT芯片内部共设有接收缓存器、发送保持器、线路控制寄存器、除数寄存器(高低8位各1个)、 自环控制寄存器等6个控制寄存器,每个寄存器都被分配了1个地址,通过对相应地址进行读写,CPU可完成数据发送、接收、自环及芯片参数设置等操作。 (2)LOOP.VHD 本模块的功能是根据用户的指令,对芯片本身功能进行测试。用户首先 将芯片设置为自环状态,使芯片内部发送数据线与直接接收数据线短接;再通过向发送保持器写入特定的数据,与接收缓存器中读出的数据进行比较,看两者是否相 同,用户即可判断芯片是否工作正常。 ??? (3)CLKGEN.VHD CLKGEN.VHD是波特率发生器模块,用来产生发送同步的时钟信号doclk。它将除数寄存器高低各8位共16位数据作为 除数,对外部2MHz的时钟源进行分频。用户可通过修改除数寄存器的值动态地改变数据传输速率,因此操作方便、灵活。 (4)RBR.VHD RR.VHD作为整个芯片的接收模块,其中包括接收缓存器、接收数据同步、串/并转换。 端 口描述如下: entity rbr is port (diclk:in STD_LOGIC; --接收数据同步时钟,由发方提供 rrbr:在STD_LOGIC; --读接收缓存器信号 rsrbr:in STD_LOGIC; --接收缓存器清零信号 dbus:out STD_LOGIC_VECTOR (7 downto 0); --8位数据线,单向,输出 dr:out STD_LOGIC; --接收缓存器数据有效信号 ren:out STD_LOGIC; --妆收使能信号,通知发方接收方准备好可发送数据 di:in STD_LOGIC); --串行接收数据线 end rbr; 当接收缓存器中无数据时,ren信号有效,通知发送方传数据。然后根据 dilck对di信号采样,一旦缓存器满,ren无效,dr有效,通知CPU读数。 仿真波形如图4所示。部分代码如 下: process (rsrbr,diclk) --serial data to parallel data variable l,m: integer range 0 to 8; begin if rsrbr=1then

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档