9. 简述AVALON总线的特点。
答:1.所有外设的接口与Avalon总线时钟同步,不需要复杂的握手/应答机制 2.所有的信号都是高电平或低电平有效,便于信号在总线中高速传输。在Avalon总线中, 由数据选择器(而不是三态缓冲器)决定哪个信号驱动哪个外设 3.为了方便外设的设计,地址、数据和控制信号使用分离的、专用的端口
10. 简述Altera公司支持的SOPC技术的PLD产品类型。
答:Altera公司的PLD分为CPLD和FPGA两类:CPLD器件逻辑单元大,分解组合能力很强,一个单元可以分解成数十个组合逻辑,因此其产品较适合设计组合逻辑电路;FPGA器件逻辑单元小,有较多的触发器,适合用来设计需要大量触发器时序逻辑电路。
11. System.h系统描述文件包含了哪些NIOS II系统的硬件信息?system.h存在NIOS II工程什么文件夹中?
答:System.h系统描述文件包含了:外设的硬件配置、外设的基地址、中断请求优先级、外设的符号名等。system.h存在NIOS II工程文件夹下的software\\music_syslib\\Debug\\system_description文件夹中。
12. 基于altera公司的SOPC系统如何实现上电自动加载程序? 答:1) 在SOPC Builder中,将CPU的Reset Vector设为cfi_flash
2) 下载硬件时,先将DE2板上液晶左边的开关扳到prog,在下载器窗口中Mode选项选择Active Serial Programing选项,然后单击Add File按钮,选择FlashTest.pof文件,勾选全部选项,点击start按钮即开始下载。下载结束后将上述开关扳回run。以后上电之后就自动将硬件加载到FPGA中,可以直接运行软件。
3) 下载软件时,选择Tool->Flash Programmer,点击Program Flash就可以将程序烧入Flash。
13. alt_main()和main()的区别是什么? 答:自动初始化和用户自定义初始化
在调用main()之前,应用程序假定运行环境和所有的服务系统都被初始化并准备运行。初始化可以被硬件抽象层(HAL)系统库自动执行。程序员不需要考虑系统的输出设备以及如何初始化每一个外设,HAL会自动初始化整个系统。 alt_main()函数提供了一个独立式的编程环境,能够完全控制系统的初始化。
26
14. 什么是C2H编译器?有什么特点?
答:C2H 是一种可以直接对ANSI C 函数定制硬件加速的技术,C2H 编译器能分析程序要加速实现的存储器接口类型,生成硬件加速器逻辑以及合适的Avalon(总线供互联架构)的主机和从机接口,达到与存储器延时的匹配。这样,分担了处理器的数据计算和存储器访问任务,使处理器能够更好的处理其他任务。
15. 如何基于HAL编写中断服务程序? 答:中断服务程序的编写和注册方法 1.HAL的ISR API
2 Nios II IDE创建系统库工程时,包含了所有需要的ISR。 用户不必去写HAL ISR,除非用户要和定制的外设通信。 HAL API定义了很多函数管理硬件中断,如: alt_irq_register() alt_irq_disable() alt_irq_enable()……
用HAL API编写用户的ISR,步骤: 1. 编写特定设备中断的ISR。
2. 调用alt_irq_register()函数来注册ISR。、
编写用户的ISR
用户编写的ISR必须符合alt_irq_register()函数的原型 void isr_name (void *context, alt_u32 id)
第一个参数:中断上下文指针(向ISR传递语境信息的指针) 第二个参数:中断号, 在system.h中声明,例如:PIO_IRQ
? 注意:编写的ISR中不能使用ANSI C标准库中I/O有关操作, 不要调用printf(),可能使系统死锁……
注册用户的ISR,向HAL层传递中断服务程序信息
alt_irq_register(alt_u32 id,void *context, void(*isr)(void *, alt_u32))
第一个参数为中断号; (alt_u32在alt_types.h定义为unsigned long) 第二个参数为中断上下文指针; 第三个参数是中断服务函数的指针。(可直接用函数名字) ? 中断发生时,系统回调用户注册的中断服务程序,传入的第一个参数即为用户调用alt_irq_register时传入的中断上下文指针参数;传入的第二个参数为本中断的中断号。
27