SOPC复习纲要

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

一、基础题型1、SOPC设计流程分为哪些基本步骤?1设计准备:方案论证、系统设计、器件选择等2设计输入:图形、文本、存储器、波形等Top-Down3设计编译:分析与综合、适配、编程、时序分析4设计仿真:功能仿真、时序仿真5器件编程:将设计处理的编程数据文件载入到PLD中6硬件测试:在开发系统中对设计的系统进行测试2、软核、硬核、固核、IP概念与区别?软核(SoftIPCore)以HDL文本形式提交给用户,已经过RTL级设计优化和功能验证,但其中不含任何具体的物理信息。常用的CPU软核:Altera的Nios、NiosII固核(FirmIPCore)介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。硬核(HardIPCore)基于半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已通过工艺验证,具有可保证的性能。常用的CPU硬核:ARM、MIPS、PowerPC、Intelx86、Motorola68000等。集成电路IP:经过预先设计、预先验证、符合产业设计规范和设计标准,并具有相对独立且可以重复利用的电路模块或子系统,如CPU、运算器、放大器、存储器等。在支持SOPC设计的EDA工具软件中包含IP库。3、简述支持SOPC技术的EDA工具软件的种类及特点?QuartusII:是Altera公司的第四代可编程逻辑器件集成开发环境,提供了SOPC设计的综合开发环境,是SOPC设计基础,将设计、综合、布局、仿真验证和编程下载及第三方EDA工具集成在一个无缝的环境中,可以进行系统级设计、嵌入式系统设计和可编程器件设计。提供从设计输入到器件编程的全部功能。SOPCBuilder:是功能强大的基于图形界面的片上系统定义和定制工具。SOPCBuilder库中包括处理器和大量的IP核及外设。NiosIIIDE(集成开发环境)是NiosII系列嵌入式处理器的基本软件开发工具。采用菜单界面方式开发与调试C/C++应用程序,提供多C/C++种应用程序模板和相应的头文件。所有软件开发任务都可以在NiosIIIDE下完成,包括编辑、编译和调试程序。直观、使用方便,编译与运行速度较慢。NiosIISDKShell(软件开发包)采用输入命令进行编译检查、运行、调试C/C++应用程序。不够直观,但是编译检查、运行和调试速度较快。Modelsim:Modelsim:是一种快速又方便的HDL编译仿真工具。具有强大的数字和模拟仿真功能,在设计、仿真、测试和调试开发过程中,有一整套工具可供使用,而且操作灵活。QuartusII界面直接使用Modelsim对生成的HDL代码进行编辑、编译和功能仿真(不能编辑输入波形,需要编写测试程序完成初始化与输入)。Modelsim不能指定器件、不能编程下载。DSPBuilder:Altera公司的数字信号处理开发工具,设计者可以Matlab软件中完成算法设计。在Simulink完成系统集成后,通过SignalCompiler模块生成在QuartusII软件中可以使用的测试文件(用于仿真检查)和硬件描述语言文件(用于编程下载)。DSPBuilder用途和特点:Altera公司的数字信号处理开发工具,设计者可以Matlab软件中完成算法设计。在Simulink完成系统集成后,通过SignalCompiler模块生成在QuartusII软件中可以使用的测试文件(用于仿真检查)和硬件描述语言文件(用于编程下载)。4、简述DSPBuilder的用途和特点?用途:帮助开发者完成基于FPGA的DSP设计,自动完成大部分的设计工程和仿真,直至把设计文件下载至FPGA中。特点:应用灵活,成本低,但在速度上比用硬件实现的DSP要慢很多。5、试说明Nios2的IDE和SDK调试方式的区别?NiosII系统有两种调试方式:IDE和SDKIDE调试方式面向对象,通过直观的软件界面上的菜单、按钮完成各种操作;SDK调试方式面向过程,通过执行各种命令完成程序的调试与运行。6、简述HAL的用途及基于HAL的外围设备的编程方法?HAL的作用HAL(硬件抽象层)为与硬件进行通信的程序提供简单的设备驱动接口。HAL的应用程序接口(API)是与ANSIC标准库综合在一起的,使用户可以用类似C语言的库函数访问硬件设备或文件。HAL作为支持NiosII处理器系统的软件包,为用户的嵌入式系统上的外围设备提供了与之相匹配的接口程序。基于HAL的外围设备的编程方法(1)标准输入(stdin)、标准输出(stdout)和标准错误(stderr)这三个函数是最简单的控制I/O设备的方法。HAL系统库在后台管理stdin,stdout,stderr函数,它可以使用户通过相关通道发送和接收字符。用户可以通过在NiosIIIDE中设置系统库的属性给每个通道分配一个具体的硬件设备,使用标准输入、标准输出和标准错误函数来控制外围设备。(2)字符模式设备的通用访问方法(打开文件与写文件方式)除了用stdin、stdout、stderr函数之外,字符模式设备还可以通过打开和写文件的方式进行访问。7、试说明用户自定义IP核的步骤?1编写IP文件2ip文件配置3设置ipsearch目录4添加ip8、简述基于NiosII与HAL的SOPC系统软硬件开发步骤?NiosII的硬件开发1、在QuartusⅡ中新建一个工程2、用SOPCBuilder建立一个新的SOPC硬件系统3、加入NiosII系统组件4、调整SDRAM地址5、CPU设置与系统生成6、建立顶层设计文件生成NiosII硬件系统7、引脚锁定软件开发:1、新建软件工程2、编译工程3、调试工程4、运行工程9、SOPCBuilder的组件库中通常有哪些成员?答:提供了三个成员供选择:①NiosⅡ/e(经济型)成员,具有占用最小逻辑的优化,占用600~700逻辑元件。②NiosⅡ/f(快速型)成员,具有高性能的优化,占用1400~1800逻辑元件。③NiosⅡ/s(标准型)成员,在占用逻辑和高性能优化方面的性能居中,占用1200~1400逻辑件。基本的SOPC系统大致可以分为FPGA、存储器、外围元件三个部分。FPGA部分的核心是NiosCPUCORE(CPU核),设计工作主要在FPGA部分进行。CPU核JTAGUART(JTAG通用异步通信总线)UART(通过串口与计算机通信)PIO口Avalon三态总线桥(用于CPU与SRAM等器件相连)片外SRAMTimer定时器LCD液晶显示器Flash存储器(用于掉电时保存信息)Flash控制器SDRAM控制器系统标识SystemID组件(只读组件)10、试说明引脚锁定的作用和方法?作用:用户需要进行引脚分配,使得编译器能把用户设计中的信号分配到目标器件上的特定引脚上。方法:(1)采用导入引脚锁定文件的方法Assignment——ImportAssignments,导入以.CSV为后缀的引脚锁定文件。此方法要求顶层设计图管脚名称与锁定文件一致。(2)采用Assignments-Pins或PinPlanner工具。Assignment——Pins/PinPlanner/AssignmentEditor中进行编辑设置(3)编辑引脚锁定文件,再导入的方式。(当分配的引脚的数量比较多使用方便)File-New-OtherFiles-TclScriptFile文件格式和内容如下:#Setup.tcl#Setuppinsetting[例5.1]编写C/C++程序,让DE2开发板上的18只红色发光二极管LEDR17~LEDR0依次向左移位发光。LEDR18.c#includecount_binary.hintalt_main(void){inti,data;data=0x01;for(i=0;i18;i++){IOWR(LED_RED_BASE,0,data);data=1usleep(100000);}}count_binary.hLED18.c及其他程序所需头文件#include“alt_types.h”#includestdio.h#includeunistd.h#include“sysytem.h”#include“sys/alt_irq.h”#include“altera_avalon_pio_regs.h”[例5.2]编写C/C++程序,让DE2开发板上的9只绿色发光二极管LEDG8~LEDG0依次向右移位发光。LEDG9.c#includecount_binary.hintalt_main(void){inti,data;data=0x100;for(i=0;i9;i++){IOWR(LED_GREEN_BASE,0,data);data=1usleep(100000);}}[例5.3]编写C/C++程序,让DE2开发板上的8只七段数码管HEX7-HEX0以两屏显示sum的数据。HEX7.c#includecount_binary.hintalt_main(void){intsum;while(1){sum=0x20060101;IOWR(SEG7_DISPLAY_BASE,0,sum);usleep(100000);sum=0x00235959;IOWR(SEG7_DISPLAY_BASE,0,sum);usleep(100000);}}[例5.4]编写C/C++程序,用key变量读取DE2开发板上18只电平开关SW上的数据,并用七段数码管显示读出的数据。SW18.c#includecount_binary.hintalt_main(void){intkey;key=IORD(SWITCH_PIO_BASE,0);IOWR(SEG7_DISPLAY_BASE,0,key);}[例5.5]编写C/C++程序,让DE2开发板上的18只红色发光二极管LEDR17-LEDR0依次向左移位或依次向右移位发光,用按钮KEY0控制移位方向。button_1.c#includecount_binary.hintalt_main(void){inti,key,data;while(1){key=IORD(BUTTON_PIO_BASE,0);if(key&0x01){data=0x01;for(i=0;i18;i++){IOWR(LED_RED_BASE,0,data);data1;usleep(100000);}}else{data=0x020000;for(i=0;i18;i++){IOWR(LED_RED_BASE,0,data);data1;usleep(100000);}}}}[例5.7]编写一个秒显示程序,利用usleep()函数实现1秒定时,定时结束后让秒计数器second加1,然后在DE2开发板的七段数码管上显示计数的结果。timer_1.c#includecount_binary.hintalt_main(void){intsecond;usleep(1000000);second++;IOWR(SEG7_DISPLAY_BASE,0,second);}

1 / 5
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功