【奔跑的FPGA】part eight Qsys工具的使用方法简明手册

    xiaoxiao2022-06-29  40

        Altera公司在Quartus II 11.0 之后推出了Qsys集成开发工具。在该版本还没有取消SOPC builder,不过取消了之前版本的快捷方式,取而代之的是Qsys快捷方式,具体在菜单Tool->SOPC builder启动。但是后续版本比如13.0就只有Qsys工具存在了。从开始流程上看,与之前的SOPC builder没有太大的区别,但是在实际开发中有很多的不同点,Qsys取代SOPC builder也将成为一个趋势。以下将使用Qsys工具演示简单的Nios工程搭建,操作一个LED灯使其闪亮。

        1,建立工程。

        工程名称led,建议单独新建一个文件夹起好名字然后把工程放进去。好的习惯可以避免很多不必要的麻烦。然后在工程里新建一个.bdf文件(Block Diagram/Schematic File),保存为led.bdf文件(顶层文件)

        2,新建Qsys系统。

        点击tools/Qsys或者快捷键打开Qsys工具,系统已经自动分配了时钟,在左侧依次搜索(Nios ii Processor)nios_qsys、(片内存储器RAM)onchip_memory 、(JTAG接口)jtag_uart、 (PIO核)pio 、(System ID接口)sysid_qsys、并添加至System Contents。

    设置参数如下:

    (1)Nios ii Processor选用内核类型为Nios II/f。

    (2)onchip_memory, Total memory size :40960 bytes

    (3)PIO核 Width:1,数据方向为 Output(控制LED灯)。此外,在Export一列双击更改名称为led0(引脚名称)

        集成各类IP核,根据需要在总线界面重新排列IP核的位置和修改IP名称。单击IP核的结合点,变为实心点代表电器上存在连接关系。此处点击菜单栏上面的System/Create Global Reset Network可以方面地对Reset网络自动布线。不要忘记总线界面最右侧IRQ一列还有一根线的连接(System/Assign Interrupt Numbers)。

        对于一个添加的IP核来说什么时候连接数据端口,什么时候连接指令端口呢?这里有一个连线的规则:如果是存储器这类的IP核,需要将其Slave端口同Nios II的data_master和instruction_master相连,而其他非存储器IP核则只需连接到Nios II的data_master即可。

        分配IP地址,点击System/Assign Base Address,自动为添加的组件分配基地址。分配完成后可以发现在地址栏的变化。

        接下来我们要对CPU进行设置,分别设置Reset Vector和Exception Vector为onchip_memory2_0.s1

        生成Qsys系统,点击菜单栏Generate/Generate..,保持默认点击Generate,系统搭建完成

        3,系统配置与下载

        在之前创建的led.bdf文件中双击,在project下找到生成的Qsys系统,OK插入,为该模块插入输入输出引脚,并更改名称。

        在Assignments/Settings的Files里面添加还没有实例化的Qsys系统, Ctrl+k进行编译错误检查,如果检查没有错误,进行引脚分配,然后Run开始全编译。全编译完成后就可以下载进板子了,此时一个Nios系统部署完毕。

        4,软件程序开发

        (1)在Quartus 软件中依次单击Tools/Nios II Software Build Tools for Eclipse,打开软件编写平台Eclipse

        (2)在Eclipse软件中新建工程:Eile/New/Nios II Application and BSP from..,在弹出的对话框SOPC Information File Name一栏中选中刚才创建Qsys系统生成的.sopcinfo文件,导入。

        (3)为工程起一个名字led_key,选择一个模板(Hello_world)点击Finish。

        (4)编辑Hello_world.c文件,点亮LED管脚;在led_key_bsp上右键Nios/BSP Editor,在弹出的Nios BSP Editor里面选择软件版本Version:13.0,标准输入输出均为jtag_uart_0。单击Generate按钮完成设置。

    此处可以用ctrl+B进行编译,如果出现memory之类的错误DescriptionResource PathLocation Type make: *** [../led_interrupt_bsp/-recurs-make-lib] Error 2 led_interrupt C/C++ Problem

    可能是因为onchip_memory的内存容量设置的太小了,回头更改过后重新生成Qsys系统,在Quartus软件中重新编译,重新下载,然后在软件编写界面.._bsp右键/Nios ii/Generate BSP重新加载BSP即可。

        (5)编译.c源文件:右键led_key,Run As/3 Nios II Hardware,对建立的工程进行编译。

        (6)软件调试:Run/Run Configerations,配置Target Connection,点击Run就可以看到板子上的LED灯闪烁了。

    #include"system.h"//变量头文件 #include"altera_avalon_pio_regs.h"//PIO接口函数头文件 #include <stdio.h>//标准输入输出头文件 #include<unistd.h>//包含usleep等头文件 #define LED_BASE 0x00021000 int main() { while(1) { IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,~IORD_ALTERA_AVALON_PIO_DATA(LED_BASE)); usleep(500000); } return 0; }【59逆袭】

    转载请注明原文地址: https://ju.6miu.com/read-1125236.html

    最新回复(0)