UART寄存器介绍与中断操作详解(应用部分)

我们在让altera fpga上的嵌入式系统和外部设备进行通信方式的时候,通常会用到拥有avalon接口的通用异步收发传输器——uart ip核。uart核实现了rs-232通讯协议,并使得大家可以设置串口通信相关的波特率、奇偶校验位、停止位和数据位,以及可选的rts/cts流控制信号等参数。
实验任务
本节实验是:在qsys系统中通过使用官方uart ip核和pc进行环回,将收到的字符发送给pc。
硬件设计
创建quartus ii 工程
首先要创建quartus ii工程,工程名为“uart_ip”。
创建qsys系统
实验中要用到的ip核有:clk(时钟)、niosii(处理器)、onchip_ram(片内存储)、jtag_uart、sysid_qsys、uart。其中只有uart ip核讲解一下,其他的ip核都是按照以前的配置方法进行设置,从library中选择uart ip核(rs-232 serial port)并打开,出现以下界面:
这里我们使用默认设置,直接点击【finish】即可。
然后,我们打开niosii ip核配置界面,因为这里只用了onchip_ram ip核存储代码和指令,所以需要对相关的设置进行修改,在reset vector处将reset vector memory处的选项选为onchip_ram,同时在exception vector处也将exception vector memory处的选项选为onchip_ram。需要注意的是,在系统中加入onchip_ram ip核之后,niosii ip核的reset vector和exception vector选项中才会出现onchip_ram选项。
添加完ip核后就可以开始连线,大家若是不熟悉怎么连线,可以照着下面完成的qsys系统界面图连。需要注意的是,要将uart ip核的端口引出来,引出端口的方法是双击ip核的export一栏,然后修改名称,按下enter键即可。
然后,点击system→assign base addresses 让系统自动分配地址,这里最好把onchip_ram的地址锁住,这是因为这个ip 核里存储着指令,最好不要让其地址发生变动。锁住地址的方法是先点击 ip 核,然后点击右键→lock base address。我们还可以将各个 ip 核的名称修改一下。最后就是生成系统了,操作可以按照“hello,world”推送里的进行。
集成qsys系统
下面两个图为集成qsys关键步骤,详细集成步骤请参考“hello,world”推送里的操作。
quartus ii工程中的顶层代码如下。
编译和下载
这时,我们便能够进行编译查错了,我们可以通过quartus ii软件菜单栏中的【processing】→【start compilation】来进行编译,也可以通过快捷栏中的快捷键进行编译。接下来我们就需要进行配置io,分配管脚。首先,点击quartus ii软件菜单栏中的【assignment】→【device】,然后我们在device界面中找到【device and pin options…】进入页面配置io。将未使用引脚设置为高阻输入(as input tri-state),这样上电后fpga的所有不使用引脚都将进入高阻抗状态。
接下来,将一些io设置成普通io,通过双击红框位置,将一个个value的值修改过来。
通过quartus ii软件菜单栏中的【assignments】→【pin planner】选项分配引脚
最后我们再进行一次全编译,成功编译硬件系统后,将产生用于配置fpga的uart_ip.sof文件。下面我们就来说明一下将.sof文件下载到fpga目标器件的步骤。
将下载器一端连接电脑,另一端与开发板上对应端口连接,最后连接电源线并打开电源开关。接下来我们下载程序。工程打开后通过点击工具栏中的“programmer”图标打开下载界面,通过“add file”按钮选择 output_files 目录下的“uart_ip.sof”文件。
开发板电源打开后,在程序下载界面点击“hardware setup”,在弹出的对话框中选择当前 的硬件连接为“usb-blaster[usb-0]”。然后点击“start”将工程编译完成后得到的 sof 文件下载到开发板中。
至此,硬件部分设计完成,下面开始基于nios ii sbt for eclipse的软件部分的设计。
软件设计
我们通过quartus ii软件菜单栏中的【toos】→【nios ii sbt for eclipse】,来启动niosii sbt for eclipse软件。打开nios ii sbt for eclipse软件后,会弹出workspace launcher页面。我们这里将工作空间设置为qsys路径下的software文件夹,如图所示。
设置好工作空间后,我们点击【ok】进入nios ii sbt for eclipse软件主界面中,在该页面我们通过单击菜单栏中的【file】→【new】→【nios ii application and bsp from template】,来新建工程。
单击【…】按钮来选择qsyshardware下的uart_ip.sopcinfo文件,即指向当前硬件设计系统。nios ii sbt for eclipse软件会自动识别qsys系统中cpu的名称,所以cpu name一项会自动生成。接下来,要给nios ii sbt for eclipse软件中的工程命名,这里的名称没有特殊要求,我们这里名为uart。然后将工程存放的位置修改为qsyssoftwareuart。注意不要漏掉了“uart”,不然生成系统的时候会报错。最后我们来看下project template窗口,该窗口中陈列的都是已经设计好的软件工程。我们可以从中选择一个,作为自己的工程的模板来使用。当然也可以选择bland project(空白工程),就需要自己写所有的代码。这里我们选择的是hello world模板工程,然后我们在它的基础上进行修改,这样比空白工程更加方便。设置完工程后,直接点击【finish】完成工程创建。然后,在nios ii sbt for eclipse软件的
左侧project explorer窗口中有两个工程:uart 和 uart_bsp。其中uart 是c/c++应用工程,而uart_bsp是描述qsys系统硬件细节的系统库。打开uart 工程里的 hello_world.c文件。
我们在这里要验证之前创建的qsys系统是否能正常工作,验证方法和“hello,world”是一样的。
这时大家点击【run as】→【nios ii hardware】,然后点击【target connection】标签,然后在target connection窗口中点击【refresh connections】按钮后。这时软件便会自动识别我们开发板上的qsys系统,并显示qsys系统的相关信息。我们接着点击【run】,软件会把irq.elf文件下载至开发板中运行起来。更加详细的图和文字描述,可以在“hello,world”下载验证部分查看。
这时,若之前创建的qsys系统无误,代码下载完成后在nios ii console窗口会显示“hello from nios ii!”字符,如下图所示。
验证完qsys系统是否能正常运行之后,我们就可以开始软件部分的设计了。这时只需要在当前的代码窗口修改代码就可以了。
下载验证
现在可以编译uart工程了。右键uart工程,点击build project。稍等片刻,console窗口显示的内容如下图所示,这表示工程编译成功。
右键uart工程,点击【run as】→【nios ii hardware】,代码就被下载到开发板上了。接下来需要连接串口线并利用串口助手进行验证。

未来智能家居将走向全屋智能
设置VoIP之前,您应该考虑六件事!
2022全球半导体行业研究报告
将ModelComposer和System Generator forDSP完美结合的统一工具
弹性公网IP绑定弹性网卡新功能及最佳实践
UART寄存器介绍与中断操作详解(应用部分)
电子英文缩写
小米和联发科合作独家定制5G芯片,将进一步增强双方实力
基于μC/OS嵌入式操作系统的嵌入式数据管理设计
HDPQ-40A多功能电能质量监测仪操作手册
同步突发式SRAM
盘点美容行业在今后AI运用的5个趋势
诺基亚Withings再发新品:皮革版Steel HR智能手表
数字压力计与压力传感器的联系和区别
广西5G与金色的龙脊梯田稻浪共舞
怎样将通用键盘变成艺术品
一加TV的遥控器带有Google智能助理按钮
什么是基本输入输出printf、scanf ...
混合云计算已成新一轮发展趋势
服务器数据恢复—服务器阵列磁盘进水损坏的数据恢复案例