2019年NiosII的USB接口模块设计
- 格式:doc
- 大小:110.00 KB
- 文档页数:6
基于NIOSII 的 USB2.0记录仪数据采集器研制
黄辉
【期刊名称】《《中国高新技术企业》》
【年(卷),期】2012(000)004
【摘要】为解决航空参数记录数据读取问题,文章提出了一种新颖的基于NIOSII 和USB2.0平台的高性能记录仪数据采集器。
系统以USB2.0作为与计算机的接口,在FPGA内建NIOSII处理器来实现NAND FLASH的控制以及与CY7C68013A USB2.0芯片接口。
实验证明,该系统在采集速率为20MByte/s,远超出了目前通用的数据采集器的性能。
【总页数】2页(P112-113)
【作者】黄辉
【作者单位】台州科技职业学院机电工程系浙江台州318020
【正文语种】中文
【中图分类】TP333
【相关文献】
1.基于USB
2.0接口的PCM数据采集器设计与实现 [J], 张莉;周雪纯;张乐
2.基于USB2.0的同步高速数据采集器的设计 [J], 林植平;倪瑛
3.基于USB2.0的高速数据采集器设计 [J], 董文信;柴克谦;张福雄
4.基于USB2.0的遥测数据采集器研制 [J], 徐旻;王洪森;谌德荣
5.基于USB2.0的GPS中频数据采集器研制 [J], 胡辉;沈翔;纪兆云;吴超;高明华
因版权原因,仅展示原文概要,查看原文内容请购买。
第30卷 第6期2007年12月电子器件Ch inese Jou r nal Of Elect ro n DevicesVol.30 No.6D ec.2007Design of a Test ing System f or In dustr i a l CT Data A cquisition ModuleB a se on N ios II and U SB Inter face 3GA O Fu 2qi an g13,J I A N G Ren 2qi n g 2,L U H ua 2,CA O Pen g 2,A N K an g21.I C T Research Center ,Chong qi n g Uni versi t y ,C hon gqi ng 400030,Chi na;2.Automat ion Coll ege ,Chon gqi n g Uni versi t y ,C hon gqi ng 400030,Chi naAbstract :To design a te sti ng system for indust rial C T dat a acquisition module ba sed o n Nios II soft core processor and USB i nte rface.Syst em scheme de si gni ng ,har dwa re a nd sof t ware de si gni ng a re di scussed.Desi gni ng wi t h Nios II p rocessor helps to si mplif y syst em st ruct ure ,increase flexi bilit y of design a nd im 2prove system performance.Pseudo i nt errupt which combi nes t he advanta ge s of interr upt t ra nsfer and bul k t ransf er is used to meet t he requi re me nt of mass data and real ti me.Practical application shows t hat t he system ,wit h a t ransmission byt e error rat e less t ha n 1×10-7a nd a t ransfer speed of 370kbyt e/s ,can be successf ully used to t est i ndust rial C T data acqui sition module.K ey w or ds :data acqui si tion ;i ndust rial C T ;Nio s;U SB interf ace ;pseudo i nte rrupt ;bulk t ransf er EEACC :1130B基于Nios II 和USB 接口的工业CT 数据采集模块测试系统设计3高富强13,江仁清2,卢 华2,曹 鹏2,安 康21.重庆大学ICT 研究中心,重庆400030;2.重庆大学自动化学院,重庆400030收稿日期22基金项目国家自然科学基金“基于高精度工业T 测量系统的发动机材料可靠性分析技术研究(668)资助项目”作者简介高富强(562),男,副教授,工作于重庆大学I T 研究中心,研究方向为嵌入式数据采集、射线辐射探测,f q @q 摘 要:基于Nios II 软核处理器和USB 接口设计了一种工业CT 数据采集模块测试系统.论述了系统的方案设计、硬件设计、软件设计.利用Nios II 进行设计简化了系统结构,提高了设计灵活性,优化了系统性能.在USB 传输中应用了伪中断批量传输方式,很好地满足了数据传输量和实时性的要求.实际使用结果表明,该系统数据传输字节出错率小于1×10-7,数据传输速度达370kbyte/s ,可成功地应用于工业C T 数据采集模块的测试.关键词:数据采集;工业C T;Nios ;U SB 接口;伪中断;批量传输中图分类号:TP302.1 文献标识码:A 文章编号:100529490(2007)0622096204 在工业C T 机中,测量数据通常是由多个数据采集模块产生的,只有保证每个模块采集到的数据的准确性,才能确保整个工业C T 测试系统得到的测量数据准确可靠.因此,在设计和制造好数据采集系统后,有必要使用工业C T 数据采集模块测试系统单独地对每个数据采集模块进行数据准确性测试.本文提出了一种基于Nios II 处理器和USB 接口的工业CT 数据采集模块测试系统的解决方案.根据此方案设计的工业CT 测试系统能够将一个数据采集模块中64通道中的测量数据实时地传输到上位机,并在上位机中对数据进行存储、显示、数理统计以及通过上位机应用程序的可视化界面发送自检、设置积分电容、设置积分时间、设置采集次数等:20070101:C 07209:19C gao c u.e .10个工业C T机的参数设置命令.数据采集系统设计人员利用该测试系统能方便地得到在各种参数条件下数据采集模块得到的测量数据,通过分析后纠正设计缺陷,改善数据采集系统的性能.1 Nios II处理器Nios II处理器是美国Alt era公司开发的第二代32位R ISC软核处理器[1].它是在Alt era公司的F PGA技术和AVAL ON总线技术支持下工作的新一代嵌入式软核处理器,其性能超过150D Mimp2 l ul se/s[2].使用Nios II进行嵌入式系统的开发,具有灵活、可裁剪、效率高、成本低等优点.值得一提的是,Nio s II处理器提供了硬件描述语言与C/C++语言的无缝连接,使得原先在MCU/DSP等微处理器平台下开发的C/C++语言程序能够稍做修改就能移植到Nios II中,简化了开发的过程.此外,Al2 t era SO PC Buil der提供的许多Nios II外设,如UAR T、PIO、SDRAM控制器、DMA、PLL等,极大地方便了用户使用Nios II处理器进行的SOPC 开发.2 测试系统方案设计在工业C T测试系统中,X射线对被测工件进行测量后得到的测量信号经过一系列的变换和处理后,通过I2C总线传输到测试系统中.该系统在对其进行数据格式转换后,再通过USB接口,将数据上传到上位机中进行处理和显示.由于单个模块数据采集的最大速度为335kbyte/s,而工作在闲置的全速U SB总线上的批量传输最大传输速度为1216 kbyt e/s[3].因此,采用USB总线传输测试数据即可满足传输速度要求.在此基础上,测试系统有三种不同设计方案:(1)采用C语言或汇编语言编写USB接口下位机程序,MCU/DS P作U SB通讯的下位机,并用F PGA完成输入数据转换、缓存、输出命令的处理.(2)用硬件描述语言V HDL或Verilog HDL 编写U SB接口下位机程序,由FP GA完成输入数据转换、缓存、输出命令处理以及和上位机的U SB 通讯.(3)采用C/C++语言编写U SB接口的下位机程序,Nios II处理器作USB通讯的下位机.由F PGA完成输入数据转换、缓存、输出命令的处理以及和上位机的U SB通讯在以上三种方案中,方案①接口程序编写简单,但在F G的基础上再加M U DS使系统复杂而显得冗余;方案②电路简洁,但用硬件描述语言编写U SB接口下位机程序比较复杂,无法移植在其它微处理器上开发成功的接口程序.方案③电路简洁、抗干扰、可靠性好,使用嵌入到FP GA中的Nios II处理器,能够方便地移植在MCU/DSP等处理器上开发成功的接口程序,开发过程简单,因此,选择方案(3).基于方案(3)的测试系统方案如图1.图1 工业CT测试系统方案3 硬件设计本系统的硬件主要芯片为Alt era公司的Cy2 clone EP1C3T144C8F P G A和南京沁恒公司生产的C H372U S B总线接口芯片.Cyclone EP1C3T144C8FP GA[4]具有2910个L E、59904个存储位、1个PLL以及104个最大可用I/O,另外它还支持Nios II处理器,能够满足多种不同要求的应用场合.C H372[5]具有8位数据总线和读、写、片选控制线以及中断输出,能够方便地连接到F P G A上;它内置了U S B通讯的底层协议,使用内置固件方式,并配合厂家提供的Wi ndows驱动程序和A PI应用层接口时,能极大地方便USB设备的开发.另外,它还支持全速设备接口,兼容U SB2.0协议,支持控制传输、批量传输和中断传输,能够满足各种不同U SB设备对数据传输速度的要求.图1中输入数据转换模块、输出命令处理模块均用V HDL语言编写.256kbyt e模块由Quart us II软件的Me ga Wiza rd Pl ug2in Manager生成,而Nios II处理器及其外设则由Al tera SOPC builder 创建.图中除C H372、U S B总线及上位机以外,全部嵌入在FP GA中.该系统的工作原理为:64通道20bit信号以及3个的数据校验信号通过I总线发送到测试系统中输入数据时,输入数据转换模块将的数据转换成便于N II处理器处理及U SB传输7902第6期高富强,江仁清等:基于Nios II和USB接口的工业C T数据采集模块测试系统设计.P A C/P 20bit2C.20bitios的8bit数据,并存储在作为数据缓存器的RA M中.每处理完一组64通道的信号及校验数据,输入数据转换模块便发送Data Ready信号向Nios II处理器发送中断请求.Nios II中断允许并执行对应的中断服务程序,将数据上传到U S B总线接口芯片CH372中,并通过该芯片以USB总线的方式传输给上位机应用程序处理.输入数据转换模块的时序仿真图如图2.图2 输入数据转换模块时序仿真图输出命令时,应用程序将所要输出的20bi t命令通过U S B总线下传到Nios II处理器中,再由其将数据发送到输出命令处理模块进行8bit到20bit的数据格式转换.Nios II处理器在发送完命令信号后,再发送Cmddown信号给该模块,通知其接收命令,并以I2C总线的方式将命令下传给下级电路.基于上述两种芯片的工业C T测试系统的硬件框图如图3.图3 数据采集模块测试系统硬件框图4 软件设计在USB的四种传输类型中,批量传输的传输速度最快,适用于待传输数据量大,但实时性要求不高的场合;而中断传输传输速度慢,但具有实时性好的优点.由于工业CT的数据量大,对实时性要求较高,因此,结合C H372芯片特性,可采用伪中断[5]批量传输方式,以充分发挥中断传输实时性好和批量传输方式传输数据量大的优点.伪中断批量传输,即在上传数据时,每次将最多6y的数据写入3的批量端点,随后,将预先设置好的8y的中断特征数据写入3的中断端点在中断端点写满8byte的数据后,C H372立即以中断传输方式上传中断特征数据.应用程序检测到中断特征数据便进入到伪中断服务程序中调用接收并处理批量端点中数据的子程序,完成数据的接收和处理.4.1 下位机(N ios II处理器)软件Nios II处理器和上位机的通信主要是通过Nios II处理器执行中断服务程序来完成的.在NiosII处理器中,通过在主程序中调用Nios II IDE的HAL(硬件抽象层)AP I函数al t_i rq_regi ster()[6]实现中断的注册.该函数的原型为:i nt alt_irq_regi ster(al t_u32id,voi d3cont ext,void(3i sr)(void3,alt_u32));其中,id为设备的硬件中断号,cont ext是个给中断服务程序传递上下文信息的指针,而isr为与i d对应的中断服务程序.对应于以上注册的中断服务程序的原型为:Void i sr(void3context,alt_u32i d));完成中断服务程序的注册和中断服务程序的编写后,当程序在硬件上运行时,如果有对应于i d的中断发生,则Nios II处理器自动进入中断服务程序,完成数据的传输.利用Nios II处理器实现的下位机中断服务程序流程图[7]如图4.图4 Nios II中断服务程序流程图此外,中断服务程序程序体、主程序和其它子程序都可直接使用C/C++编写或移植现有的C语言下位机接口程序.4.2 上位机软件[8]本系统上位机应用程序的任务一方面在于实现和N II处理器中的下位机程序协作实现USB传输的功能;另一方面,要完成数理统计并显示各通道8902电 子 器 件第30卷4b teCH72b teCH72.io s的数据,保存数据采集模块采集到的数据的任务.上位机程序流程图如图5.图5 上位机程序流程图应用程序启动时,首先进行初始化,其内容包括加载C H372动态链接库、打开USB设备、设定伪中断服务程序、初始化应用程序的接收数据缓冲区.随后,通过应用程序可视化界面发送自检命令,工业CT机进行自检.自检通过后,即可设置工业C T机的积分电容、积分时间、采集次数等参数.设定完参数后,应用程序向Nios II处理器发送上传数据命令,如果此时Nios II发现发送数据缓冲区中正好有数据等待发送,则进入伪中断服务程序,开始发送数据.上位机接收到数据后,将8bit数据还原为20位/通道的数据格式,用文本文件的格式保存并将其动态地显示在应用程序的可视化界面中.由于CH372批量传输时,一次最多能读取的最大长度为4096byte,因此,在需要连续传输大量的数据时候,必须每4096byt e传输完成时重新发送上传数据命令.接收完设定的数据后,即可退出程序.5 结论本文讨论的工业CT数据采集模块测试系统利用了Nios II处理器和F P G A灵活、可配置的以及USB伪中断方式的批量传输速度快、实时性好的优点,简化了工业C T数据采集系统的开发过程,提高了开发效率. 为了对该系统的性能进行量化的评估,对该测试系统数据传输出错率及数据传输速度进行以下测试. (1)由下级电路的FP GA连续发送约定的不同字节数的测试数据到该测试系统,并经其传输到上位机测试程序中.(2)测试程序将收到的数据和预先约定的测试数据进行比较,如果二者不同,则数据传输出错.(3)通过测试程序不断改变所传输的测试数据的字节数,直到出现数据传输出错.(4)将传输出错的数据的字节数和所传输的数据字节总数相比,得到传输出错率;将传输正确的数据字节数和传输这些数据所用的时间相比,得到数据传输速度.实际测试结果表明:该系统在测试工作在设计的参数范围内的数据采集模块时,数据传输出错率小于1×10-7,数据传输速度达370kbyte/s,实时性好;它能及时暴露被测模块设计和制造的不足,有助于改善设计、提高产品质量,可用于数据采集模块的设计验证以及产品制造过程检验.目前,该系统已成功地应用于工业C T数据采集模块的测试.参考文献:[1] 彭澄廉,周博.挑战SOC-基于NIOS的SO PC设计与实践[M].北京:清华大学出版社.2004.2.[2] Al tera公司.Nio s II Processo r Reference B oo k[M].NII5V225.1.15225.[3] 萧世文.USB2.0硬件设计[M].北京:清华大学出版社.2002.22250.[4] Al tera公司.Cyclone Device Han dboo k[M].Vol ume1.C5V121.9.2212222.[5] 南京沁恒公司.USB总线接口芯片CH372中文手册A3版[S].1212.[6] Al t era公司.Nios II Sof t ware Developer’s Hand2Book[M].NII5V225.1.11012114.[7] 南京沁恒公司.C H372/C H375和C H451/CH452演示板说明及应用参考[S].2C版.227.[8] 孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社.2006.6.129.9902第6期高富强,江仁清等:基于Nios II和USB接口的工业C T数据采集模块测试系统设计。
3 2006211201收到,2007201205改回33康文轩,男,1980年生,硕士研究生,研究方向:嵌入式开发。
文章编号:100325850(2007)022*******基于N I OS II 的嵌入式网络接口设计D esign of Em bedded Network I n terface ba sed on N I OS II康文轩 李 斌 屈 巍 鲍广喜(沈阳理工大学信息学院 沈阳 110168)【摘 要】阐述了基于N I O S II 软核处理器和以太网控制芯片R TL 8019A S 的网络接口设计。
简要介绍了基于FPGA 的SO PC (System O n P rogramm ab le Ch i p ,简称可编程片上系统)技术,给出了网络接口的软硬件的设计和实现。
此设计增强了系统的灵活性,并且结构简单适应于不同应用领域对接入网络的需求。
【关键词】N I O S II ,网络接口,FPGA ,SO PC中图分类号:T P 393文献标识码:AABSTRACT T h is paper expounds the netw o rk interface design of N I O S II soft co re p rocesso r and E thernet R T l 8019A S ,and gives a si m p le introducti on to FPGA -based SO PC techno logy ,and designs and i m p lem ents the netw o rk interfaces of softw are and hard 2w are ,w h ich enhances the feasibility of the system and is ted to the requirem ent of access netw o rk in different areas because of its si m p le structure .KEYWOR D S N I O S II ,netw o rk interface ,FPGA ,SO PC1 SO PC 技术与嵌入式软核处理器N I O S IISO PC 是一种基于FPGA 的可编程SOC (SystemO n a Ch i p )。
Nios II的USB接口模块设计1. 引言随着电路规模越来越大,片上系统(SoC)已经成为IC设计的发展趋势,相应地也有了更加灵活的片上可编程系统(SOPC)。
Nios II CPU是一个基于流水线设计的通用RISC微处理器,拥有五级流水线和指令与数据内存分开的哈佛结构,具有可配置功能。
用户可以根据需求在SOPC Builder中增减IP核,从而实现资源优化。
为了构建一个更简洁高效的片上系统,用户可以自行开发IP组件,作为用户自定义逻辑添加到AVALON总线[1]。
AVALON 总线是一种结构相对简单的总线,用于连接Nios II和其他外设。
它规定了主从部件间的端口连接关系,以及部件间通信的时序关系。
AVALON总线拥有多种传输模式,以适应不同外设要求。
基本传输模式是在主从外设之间进行单字节,半字或字的传输。
AVALON总线还支持一些高级传输模式,例如支持流操作,支持延时操作,支持多个主设备同时访问。
通常来说,EDA厂商及第三方提供的IP核都是通用的,但进行SOPC设计时,用户可能有特殊需求,这时必须使用用户自定义逻辑来实现所要的功能。
SOPC Builder集成在Altera 公司的EDA工具Quartus II中。
用户可以通过SOPC Builder提供的图形用户界面从Altera 公司提供的IP库中选取一些组件,如Nios II,DMA,SRAM,FLASH等等,根据实际需要设置这些IP的配置参数。
用户还可以自己编写HDL代码模块作为用户自定义逻辑方便地添加到SOPC Builder中,设计流程如图1所示。
这里以常用的USB控制芯片SL811HS为例详细介绍如何在Nios II中添加用户自定义模块。
图2是系统结构图。
3.1 USB控制芯片介绍SL811HS 是Cypress 公司的嵌入式USB host/slave 接口芯片,支持USB1.1 的全速和低速设备。
提供USB 主机的硬件接口及总线管理机制,片内集成SIE、USB 收发器和根HUB,能够完成嵌入式USB 主机所需的功能。
NIOSii配置及例程使用教程NIOS ii 配置及例程使用教程本教程为nios ii在FPGA板上的配置入门教程,仅使用在xsyan 设计制作EP2C5/EP2C8开发板上。
下面将会详细的说明如何使用nios ii在FPGA上配置一个altera公司提供的CPU,并利用这个CPU 来调试和执行相应C程序。
并且,最后会有两个例程。
一,硬件要求:1,EP2C5/EP2C8开发板一块。
2,USB电源线一条。
3,并口线一条。
4,串口线一条。
二,软件要求:1,quartus II 7.0.2,MegaCore IP 7.0.3,Nios II EDS 7.0.三,主要步骤:1,在quartus上创建一个工程。
2,在此工程里面调用SOPC,并配置CPU。
3,创建cpu.4,定义FPGA引脚并综合。
5,调用NIOS,配置相应设置。
6,再次编译综合工程。
7,下载FPGA。
四,详细步骤:1,在quartus上创建一个工程。
a)打开quartus,选择File->New project wizard.b)在打开的窗口上选择Nextc)选择工程路径,并且指定工程名字。
d)添加文件,因为没有设计文档,所以跳过,直接Next。
e)选择器件,请根据自己的开发板选择EP2C5T144C8/ EP2C8T144C8f)然后直接点Finish,创建工程完毕。
2,用SOPC配置一个CPU。
a)在quartus里面调用SOPC。
b)在打开的SOPC里面,输入系统名字,选择HDL语言种类c)点确定后开始配置CPU,双击左边栏的Nios ii Processor.d)这里选择经济型,然后点Next,直到下个页面。
e)然后点finish,Process配置结束,双击UART,配置串口f)直接用默认配置,点Finish即可,然后双击on-chip-memory 配置memory。
g)配置如上图配一个8K内部ram后点Finish,用来存放程序代码和初始化代码,然后继续创建memory用来存放变量,再创建两个4K内部ram,步骤同上。
基于NIOS II系统多串口通讯模块的设计与实现
曹木云;邬冠华
【期刊名称】《南昌航空大学学报(自然科学版)》
【年(卷),期】2007(021)001
【摘要】介绍了基于NiosII嵌入式系统多串口通讯模块的设计方案,阐述了多串口通讯模块的设计思路及实现的体系结构,从硬件和软件两方面论述了具体设计与实现过程.
【总页数】4页(P64-67)
【作者】曹木云;邬冠华
【作者单位】南昌航空工业学院,江西,南昌,330063;南昌航空工业学院,江西,南昌,330063
【正文语种】中文
【中图分类】TN91
【相关文献】
1.基于Nios II的UHF RFID读写器设计与实现 [J], 张福洪;肖怀锋;方洪灿;邓朝日
2.基于Nios II软核的多核处理器系统的设计与实现 [J], 孔德春;施慧彬
3.基于Nios II的RFID物流管理系统设计与实现 [J], 刘铭;孙科学;王淑媛;周文斌
4.基于NIOSII指纹采集系统设计与实现 [J], 陈波;江杰
5.基于NIOSⅡ的多串口网络服务器的设计与实现 [J], 高旭;金星;黄伟
因版权原因,仅展示原文概要,查看原文内容请购买。
NIOS ii系统添加外部接口读写总线实例软件环境:quartus ii 11.0本实例使用quartus ii 的Qsys工具建立NIOS ii系统。
Qsys工具只提供部分标准外部存储器件的读写控制模块,如下图示:对于一般外部地址空间的访问,需要用户自定义接口控制模块,然后挂接在NIOS ii Avalon总线上,实现外部空间的读写功能。
下面通过实例演示总线的添加及使用过程。
首先建立所需的外部接口总线控制模块(verilog module),本例建立ADV212_interface模块,对应的文件名称为ADV212_interface.v,端口描述如下:定义avalon 总线和外设的互联关系,需要关注外设的总线宽度和地址空间大小,如下图:下面生成外设控制模块,首先打开component Editor窗口,如下图:弹出对话框如下,点击Add添加ADV212_interface.v,点击NextSignals选项卡定义信号接口关系。
首次定义avalon总线Interface 选择new Avalon Memory Mapped Slave…,生成avalon-slave接口,此处为s0,如下图:首次定义外部接口信号Interface选择new Conduit将产生conduit_end,然后依次选择,Signal Type选择export依次选择其他选项,最终结果如下,点击Next进入Interface选项。
如果Remove Interfaces With No Signals有效(见下图红色方框内),点击一下。
设置其他选项,关注红色区域,如下图:下拉右侧滚动条,设置总线Timing 参数:下拉右侧滚动条,设置clock,reset:下拉右侧滚动条,设置conduit_end,点击Next进入HDL Parameters选项卡,点击Next进入Library Info选项卡,设置模块名称,点击Finish此时,在左侧component library窗口将出现刚生成的user_bus1模块,将其添加进右侧System contents窗口,然后重新分配地址和中断向量,最后在点击generation,生成NIOS ii。
Niosll和USB接口的高速数据采集卡设计引言随着现代工业生产和科学研究对数据采集的要求日益提高,在瞬态信号测量、1 系统硬件设计本系统主要是基于USB2.O 的S1ave FIFO 模式,在FPGA 控制下完成双通道、不同速率的数据的采集和发送,全兼容USB2.O 总线接口标准,其数据的采样率可高达65 Msps;适用于较高速动态信号的实时记录采集,其硬件系统总体结构框该系统主要由信号调理模块、A/D 转换模块、触发模块、基于FPGA 的主控模块、USB 收发控制模块、片外存储器及其他辅助电路组成。
调理电路与A/D 转换器,将传感器采集的模拟信号进行相关的信号调理后送入AD9244 芯片转换为数字信号。
处理后的数据送往FPGA 主控模块,根据相关的控制信息,选择通过直接传输给上位机,或者先存储在外部SDRAM,然后经过相关的数字处理后再传输给上位机。
2 系统模块介绍2.1 USB2.0 专用微处理器CY7C68013ACY7C68013A 是Cypress Semiconductor 公司生产的一款集成USB2.O 的微处理器。
它有3 种封装形式56SSOP、100TQFP 和128TQFP,其结构框CY7C68013 集成了USB2.O 收发器、SIE、增强的8051 微控制器和可编程的外围接口部件。
其SIE 可在全速(12 Mb/s)和高速(480 Mb/s)两种模式下运行,同样可以使用内部RAM 来进行程序和数据的存储。
GPIF 和Master/Slave 端口FIFO 为ATA、UTOHA、EPP、PCMCIA 和DSP 等提供了简单和无需附加逻辑的连接接口。
其编程可以根据设计的需要进行,不需要CPU 的干预,只需通过CPU 的一些标志和中断即可进行通信。
CY7C68013 共有7 个输入输出。
Nios II的USB接口模块设计
1. 引言
随着电路规模越来越大,片上系统(SoC)已经成为IC设计的发展趋势,相应地也有了更加灵活的片上可编程系统(SOPC)。
Nios II CPU是一个基于流水线设计的通用RISC微处理器,拥有五级流水线和指令与数据内存分开的哈佛结构,具有可配置功能。
用户可以根据需求在SOPC Builder中增减IP核,从而实现资源优化。
为了构建一个更简洁高效的片上系统,用户可以自行开发IP组件,作为用户自定义逻辑添加到AVALON总线[1]。
AVALON 总线是一种结构相对简单的总线,用于连接Nios II和其他外设。
它规定了主从部件间的端口连接关系,以及部件间通信的时序关系。
AVALON总线拥有多种传输模式,以适应不同外设要求。
基本传输模式是在主从外设之间进行单字节,半字或字的传输。
AVALON总线还支持一些高级传输模式,例如支持流操作,支持延时操作,支持多个主设备同时访问。
2.用户自定义逻辑模块设计流程
通常来说,EDA厂商及第三方提供的IP核都是通用的,但进行SOPC设计时,用户可能有特殊需求,这时必须使用用户自定义逻辑来实现所要的功能。
SOPC Builder集成在Altera 公司的EDA工具Quartus II中。
用户可以通过SOPC Builder提供的图形用户界面从Altera 公司提供的IP库中选取一些组件,如Nios II,DMA,SRAM,FLASH等等,根据实际需要设置这些IP的配置参数。
用户还可以自己编写HDL代码模块作为用户自定义逻辑方便地添加到SOPC Builder中,设计流程如图1所示。
接口模块的添加
这里以常用的USB控制芯片SL811HS为例详细介绍如何在Nios II中添加用户自定义模块。
图2是系统结构图。
USB控制芯片介绍
SL811HS 是Cypress 公司的嵌入式USB host/slave 接口芯片,支持的全速和低速设备。
提供USB 主机的硬件接口及总线管理机制,片内集成SIE、USB 收发器和根HUB,能够完成嵌入式USB 主机所需的功能。
SL811HS的地址和数据均通过ad[7..0]分时传输,通过a0(数据/地址选择线)电平的高低加以区分,当a0置为低电平时,ad[7..0]上传输的是SL811片内寄存器/缓冲区的地址;反之高电平则为数据。
nwr、nrd、ncs、nrst分别为写控制线、读控制线、片选线和复位线,均是低电平有效,Nios II通过这几根控制线完成对SL811HS片内缓冲区读写、片选和复位等操作。
intrq是中断请求信号线。
当SL811HS检测到外设插入、拔出或者数据发送错误、超时、数据溢出等异常情况时,通过将intrq置高电平通知Nios II。
USB接口模块设计
AVALON总线为用户提供了非常友好的接口,使得系统搭建时的一些细节问题得到屏蔽,大大减轻了系统搭建的工作量。
在SL811HS与AVALON总线的接口转换verilog代码中,只需建立SL811HS端口与AVALON总线端口的映射关系即可。
nios_intrq、nios_read_n、nios_write_n、nios_cs_n、nios_reset_n、nios_write_data[7..0]、nios_read_data[7..0]、nios_address分别对应NiosII中的中断、读、写、片选、复位、写数据、读数据、地址信号。
intrq、nrd、nwr、ncs、nrst、ad[7..0]、a0分别对应SL811HS的中断、读、写、片选、复位、数据/地址线、数据/地址选择信号。
如图3所示。
图3 自定义USB接口模块
在Quartus II中对模块功能进行仿真,由于SL811HS是数据/地址复用端口,Nios II 对其缓冲区写的时候,先把地址通过nios_write_data[7..0]发送到ad[7..0],然后把数据通过
nios_write_data[7..0]发送到ad[7..0]。
从SL811HS缓冲区读数据的时候,先把缓冲区地址通过nios_write_data[7..0]发送到ad[7..0],然后通过ad[7..0]读数据到nios_read_data[7..0]中。
如图4所示。
图4 接口转换模块仿真波形
添加用户自定义逻辑
在图形用户界面SOPC Builder中,左栏有一项是添加用户逻辑。
选择后,在Bus Userface Type 选中Avlaon Register Slave,设置为静态地址对齐方式。
加入用户编写的源代码文件,同时指定Verilog代码中各个信号的类型。
nios_clk指定为“clk”类型,nios_read_n等指定为“read_n ”类型,nios_write_data[7..0]指定为“writedata” 类型,nios_address指定为“address ”类型,与SL811HS直接相连信号线的都指定为“export”类型。
点击Instantiation 选择Simulate user logic。
再点击Timing,根据SL811HS的时序要求,Setup设置为2,Wait设置为65,Hold设置为5,Unit设置为ns。
点击Finish Editing之后,回到主界面,在System Generation中选择SDK和HDL,最后点击Generate。
当SOPC Builder生成一个Nios II处理器设计时,会完成以下工作:
1.系统存储器映像一致性检查。
对外设地址和中断优先级进行唯一性验证,检查其是
否在CPU的有效访问范围之内。
2.为Nios II系统生成一个定制的软件开发包SDK。
生成Nios II处理器系统的硬件设计文件*.ptf,可以用这些文件来创建Nios II系统硬件。
SL811HS读写函数的实现
读写操作是Nios II与SL811HS最基本的通信方式,Nios II读SL811HS缓冲区数据的时候,先用IOWR函数把所读缓冲区的地址发送给SL811HS,然后调用IORD函数,得到的返回值就是缓冲区的数据。
Nios II往SL811HS缓冲区写数据的时候,先发地址,然后调用IOWR函数把数据发送到SL811HS缓冲区的指定地址。
在用户工程中的inc/可以找到USB 模块对应地址,根据这个地址来实现SL811HS寄存器的读写操作。
Nios II每个寄存器占32位,而地址按字节分配,所以每个寄存器使用4个地址,USB模块对应的地址寄存器地址为0x00900c00,数据寄存器地址为0x00900c04。
#define ADDR_REG 0x00900c00
#define DATA_REG 0x00900c04
sl811_read(u8 reg)
{IOWR(ADDR_REG,0,reg);
return IORD(DATA_REG,0);
}
sl811_write(u8 reg, u8 val)
{IOWR(ADDR_REG,0,reg);
IOWR(DATA_REG,0,val);
}
4.总结
本文作者创新点:用verilog编写Nios II用户自定义逻辑模块,实现AVALON总线时序与USB控制器SL811HS的时序转换。
同时给出了该模块的底层读写函数。
本模块已成功在FPGA上实现视频传输功能。
SOPC技术利用库,可以快速生成嵌入式系统。
同时,可以方便地把用户自定义的逻辑加入到系统中,体现了用设计嵌入式系统的灵活性。
此外,还可以通过SOPC Builder向处理器中添加用户自定义的指令,扩充了Nios II指令集。
对于原型机的开发,是一种很好的开发方法,且能够快速地生成最终产品,有效地缩短了开发周期。