我们在让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】,代码就被下载到开发板上了。接下来需要连接串口线并利用串口助手进行验证。
-
寄存器
+关注
关注
31文章
5328浏览量
120116 -
中断
+关注
关注
5文章
895浏览量
41419 -
uart
+关注
关注
22文章
1230浏览量
101223
原文标题:NIOS II 处理器系统设计之异步收发传输UART ip核(应用部分)
文章出处:【微信号:fpgaerZT,微信公众号:FPGA科技室】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论