随着嵌入式技术的发展,基于sopc技术的嵌入式系统所具有的软硬件可裁减、可扩充、可升级以及可在线修改的特点越来越受到人们的重视。sopc系统通常具有以下基本特征:采用大容量可编程逻辑器件来实现,单芯片、低功耗;至少包含1个以上的嵌入式处理器ip核;具有一个或多条片上总线作为系统扩展功能的接口;具有充足的片上可编程逻辑资源,用户可以根据需要扩充功能部件。
异步串行通信协议(uart)以低成本、高可靠性等优点而广泛应用于嵌入式系统中,多篇文献也讨论了uart协议的硬件设计方法,但多数只限于讨论 uart协议的硬件实现,缺少从sopc系统的角度论述uart ip核的设计方法。本文以uart ip核和plb总线为例,讨论了在sopc系统下uart ip核的设计方法,该方法对其他ip核的设计有一定的参考作用。
1 uart协议介绍
uart是一种串行异步通信方式,它采用rs232电平在串行链路上进行全双工的通信,其数据传输格式如图1所示:uart协议在空闲时为高电平,通过发送起始位提示接收方数据传输即将开始,接着传输8位有效数据位和奇偶检验位,最后发送停止位表示一个字符传输完成。
2 sopc uart通信系统介绍
本文设计的sopc uart通信系统主要包括microblaze处理器、plb总线、uart ip核和ddr2控制器ip核,如图2所示。
microblaze处理器是xilinx公司针对其fpga器件优化的32位微处理器核,它采用risc(reduced instruction system computer)架构和哈佛总线结构,具有独立32位数据和指令总线,能够高速执行和访问片上存储器和片外存储器上的程序与数据;提供本地块存储器总线(lmb)、处理器本地总线(plb)等总线接口。
plb总线作为ibm coreconnect总线协议簇中的一部分,广泛的应用于ibm powerpc处理器架构中。该总线具有总线地址空间大,总线吞吐率高,能支持多个主从设备连接等特点。如图3所示,microblaze处理器通过 plb总线与uartip核、ddr2控制器相互连接,各部件之间通过plb总线协议进行交互。其中,microblaze处理器作为主设备完成系统控制和uart通信流程控制,uart ip核作为从设备在主设备的控制下完成异步串行通信,ddr2存储指令和数据。
microblaze处理器和ddr2控制器采用xilinx公司提供的ip核,uart ip核由用户编写逻辑,它是文中设计的主要内容,对此模块的设计将在下一节进行详细阐述。
3 uart ip核设计
3.1 plb slave single模块介绍
如上,uabt ip核作为plb总线的从设备,必须提供plb总线接口。但由于plb总线协议复杂,实现其接口难度较大,xilinx公司为了使用户编写的逻辑能够方便的连结到plb总线上,提供了一种plb总线与用户逻辑之间的接口模块(ipif,ip interface),利用它简化了plb总线接口信号、总线协议和其他接口相关问题。ipif接口逻辑中最简单的模块称为plb slave single模块,它提供了一种轻量级的plb总线接口,为plb总线主设备提供了解析从设备地址空间,读写从设备寄存器/存储空间等基本服务。本文设计的uartip核与microblaze处理器之间仅通过寄存器的读写进行交互,plb slave single模块很好的满足了该设计要求,因此采用plb slave single模块与uart逻辑共同构成了uart ip核。plb slave single模块与uart逻辑之间的连接关系如图3所示,接口信号说明如表1所示。
在系统中,uart ip核的内部寄存器组映射为处理器的某段地址空间,microblaze处理器通过对该段地址的读写实现对uart ip核的访问。当microblaze处理器访问uart ip核的某个寄存器时,plb总线会产生相应的地址信号和读写信号,该信号被uart ip核中的plb slave single模块解析并生成相应的ipif信号,uart ip核中的uabt逻辑响应该ipif信号,完成寄存器的读写。
3.2 uart ip核寄存器组设计
文中设计的uart ip核提供了5个寄存器,如表2所示。其中发送寄存器和读接收寄存器完成uart数据的发送和接收。状态寄存器提供了uart ip核内部状态,包括接收数据有效,发送fifo满,接收fifo满,奇偶校验错等状态。控制寄存器提供了uart ip核复位功能。配置寄存器提供了波特率设置,奇偶校验位设置等功能。
3. 3 uart协议逻辑模块设计
本文设计的uart协议逻辑模块主要包括波特率产生模块,发送模块,接收模块,寄存器组等几个部分,其结构如图4所示。寄存器组说明如表2,其他几个模块的设计如图4所示。
3. 3.1波特率模块
波特率模块根据plb总线提供的时钟产生需要的发送时钟和接收时钟。由于uabt在发送数据时只需要按照发送波特率将数据串行地发出就可以了,因此发送时钟就等于发送波特率。而当uart在接收数据时,需要对串行数据进行采样以判断接收数据。由于接收方和发送方的时钟不可能完全同步,所以需要对每一位接收数据持续电平的时间进行分段。分段越多,接收出现误判的概率就越低,但系统开销也越大。在实际的设计中通常采用发送时钟的16倍作为接收时钟。波特率模块的分频功能由两个16位计数器实现,它将plb总线时钟按配置寄存器的设定进行分频,产生发送时钟和接收时钟。
3.3.2发送模块
发送模块主要包括发送fifo和发送单元两部分,如图5(a)所示。发送fifo数据位宽度为8bit,深度为16字节。发送fifo缓存 microblaze处理器需要发送的数据。当fifo空间满时,发送模块将状态寄存器中“发送fifo满”标志位置1,microblaze处理器通过查询该位以判断uart ip核是否可以接收下一个发送数据。
发送单元的设计用有限状态机的方法实现,其状态转换图如图5(b)所示。系统在复位后,发送单元处于空闲状态。当fifo有发送数据时(empty管脚为低),发送单元发出读fifo操作,并进入数据准备状态。当数据从fifo中读出,发送单元首先发送起始位,进入发送状态。在发送状态下,发送单元依次串行发送8比特数据,并计算当前的奇偶校验码。在数据发送结束后,若配置寄存器中奇偶校验位为1,则发送奇偶校验位。最后发送单元发送停止位,回到空闲状态,完成次数据发送。
3.3.3接收模块
接收模块由接收fifo和接收单元两部分组成,如图6(a)所示。接收fifo数据位宽度为8bit,深度16字节,它负责缓存接收单元收到的数据,并在收到数据后将状态寄存器中“接收数据有效”标志位置1.microblaze处理器通过查询该位来判断是否有数据到达。
接收单元的设计同样采用了有限状态机的方法,其状态转换图如图6(b)所示。系统在复位后接收单元处于就绪状态。当接收单元在接收管脚连续检测到8个低电平时认为起始位有效,进入接收状态。在接收状态下,接收单元每16个接收时钟采集一次接收数据。8个接收数据都采集完成后,接收单元根据配置寄存器中“奇偶校验位”是否为1决定是否进行奇偶校验。若奇偶校验通过,接收单元将接收到的数据写入接收fifo.若奇偶校验未通过接收fifo满,接收单元丢弃收到的数据,并在状态寄存器中置“奇偶校验出错”位或“接收fifo满”位为1.
4实验验证
4. 1系统硬件介绍
本文采用xilinx公司提供的ml505 v5 fpga demo板作为sopc系统硬件平台。ml505 fpga演示验证板主要由一块virtex-5 xc5vlx50t fpga构成,此外还包括ram、flash、以太网接口芯片、usb接口芯片以及adm3202 rs-232电平转换芯片等外围扩展芯片,其中adm3202电路原理图如图7所示。
实验采用xilinx公司ise工具完成uart ip核的逻辑综合和仿真,仿真波形如图8所示,发送数据为0x01.uart ip核仿真通过后,用edk工具提供的peripheral import wizard生成一个采用plb slave single模块的自定义ip核框架。在该ip核目录下的user_logic.v文件中例化波特率模块、发送模块、接收模块和寄存器组,并增加相应总线访同逻辑后即生成了本文设计的uart ip核。
用edk工具中的base system builder wizard新建一个如图3所示的sopc系统,如图9所示。在port界面下将uart ip核的收发管脚定义为external,并在ucf文件中加入收发管脚的管脚映射描述。在address界面下生成uart ip核的地址空间,uart通信测试程序将通过该地址空间访问uart ip核。用edk工具中hardware菜单下generate bit stream命令生成该sopc系统的fpga配置文件。用该配置文件配置ml505板载fpga后,即生成了sopc uart通信系统硬件。
用edk工具中的xilinx sdk软件开发工具编写相应的uart通信测试程序,编译后将程序下载至microblaze处理器程序空间。将ml505板串口与pc机串口连接后运行 uart通信测试程序,在pc机上可以观察到此uart通信系统可以正确的发送和接收uart数据,证明了该uart ip核工作正常。
5结论
文中详细介绍了一种基于sopc概念的uart ip核的设计。通过将xilinx公司提供的plb slave single模块和本文设计的uart逻辑模块结合,快速搭建了一个满足plb总线接口要求的uart ip核,仿真与综合结果表明该uart ip核各项功能均达到预期要求。该设计方法既采用了成熟的商业ip核,也利用总线接口模块将用户自定义ip核与商业ip核连接成为一个完整的sopc系统。该方法增加了系统的灵活性、扩展性,同时缩短了系统开发时间,降低了系统开发难度,可为其他嵌入式系统的开发提供有益的参考。
既要大制作、又要低成本、还要快迭代,游戏工作室如何事半功倍?
上汽集团2023年销售汽车502.09万辆,出口同比增长18.75%
亚马逊封杀令下,遭殃的不只是深圳
紫光存储5000万美元入股苏州光建持股55%
大数据营销系统怎么样,有效果吗
赛灵思FPGA参考设计:用SoPC设计异步串行通信IP核
红帽公司企业数字化转型的PaaS平台—OpenShift
利用普源示波器的高捕获功能捕获偶发的异常信号
小米6最新消息:官微发声“明天!中午!12点!见分晓!”小米6发布时间曝光!锁定4月18日
美国力特保险丝怎么样 力特保险丝优势
黑科技满满的智能魔镜显示屏,它有哪些强大功能
如何确保物联网安全
10款APP被工信部下架
锰酸锂电池的技术参数_锰酸锂电池能量密度
区块链未来可能的应用方向有哪些
家电315报告:五大品类消费痛点_差评主要来自噪音过大
前景“光明”,飞利浦科锐及亚太地区LED照明大发展
安防灯气密性测试案例
如何打开heic格式文件
丰田Harrier车标换成了飞鹰标,也更加霸气了,有种不怒自威的感觉,售价约16.53万元-24万人民币