sopc考试复习.docx
- 文档编号:6676295
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:21
- 大小:474.13KB
sopc考试复习.docx
《sopc考试复习.docx》由会员分享,可在线阅读,更多相关《sopc考试复习.docx(21页珍藏版)》请在冰豆网上搜索。
sopc考试复习
1、Nios的基本组成
1.由32个32位通用寄存器r0-r31组成的寄存器组;2.支持算数、关系、逻辑、移位和循环操作的算数逻辑单元;3.支持用户自定义定制指令的定制指令逻辑接口;4.一个简单的、非向量异常控制器;5.支持32个外部硬件中断的中断控制器;6.分开的指令总线和数据总线;7.指令和数据缓冲存储器;8.指令和数据紧耦合存储器接口;9.JTAG调试模块。
2、Nios的特点
1)NIOSⅡ处理器采用流水线技术、单指令流的32位通用RISC处理器
2)提供全32位的指令集、数据总线和地址总线
3)提供32个通用寄存器
4)提供32个外部中断源
5)提供结果为32位的单指令32*32乘除法
6)提供专用指令计算结果为64位和128位的乘法
7)可以定制单精度浮点计算指令
8)单指令桶形移位寄存器
9)对各种片内外设的访问及与片外外设和存储器的接口
10)硬件辅助的调试模块,在IDE环境下,可完成开始、停止、断点、单步执行、指令跟踪等基本调试和高级调试功能
11)基于GNUC/C++工具集和EclipseIDE的软件开发环境
12)ALTERA公司的SignalTapⅡ逻辑分析仪,实现对指令、数据、FPGA设计中的逻辑信号进行实时分析
13)所有NISOⅡ处理器均兼容的指令系统
14)高达218DMIPS的性能
3、什么是SoPC?
英文全称是什么?
列举3种构成SoPC的方案?
SystemOnProgrammableChip,可编程的片上系统。
是Altera公司提出来的一种灵活、高效的SOC解决方案。
SOPC将处理器、存储器、I/O、LVDS、CDR等系统设计需要的功能模块集成到一个可编程器件上,构成一个可编程的片上系统。
现今SOPC可以认为是基于FPGA解决方案的SOC。
方案:
基于FPGA嵌入IP硬核的SOPC系统;基于FPGA嵌入IP软核的SOPC系统;基于HardCopy技术的SOPC系统
4、Nios的三种操作模式
管理模式:
除了不能访问与调试有关的寄存器(bt、ba和bstatus)外,无其它访问限制。
一般系统代码运行在管理模式下,应用程序代码可在管理模式下正常运行。
当处理器运行在管理模式下,U位是0。
处理器复位后立即进入管理模式。
用户模式:
是管理模式功能访问的一个受限子集,它不能访问控制寄存器和一些通用寄存器(et、bt、ea、ba,访问他们会产生一个异常)。
应用代码在用户模式与管理模式下均能正常运行。
用户模式为管理多任务OS提供更高的可靠性,系统代码把控制权交给应用代码前,可以选择切换到用户模式。
调试模式:
拥有最大的访问权限,可以无限制地访问所有的功能模块,U位为零。
系统代码和应用代码在调试模式下不能运行。
模式之间的切换:
处理器复位后即进入管理模式(U为0),执行eret(异常返回指令,把estatus寄存器的内容复制到status寄存器,之后跳转到ea寄存器所指地址处)指令后,切换到用户模式(复位后第一次进入用户模式必须对estatus和ea寄存器进行正确的设置,并执行一条eret指令)。
当某种异常出现时,处理器重新进入管理模式,异常将清除U位。
只有在执行断点指令或JTAG调试模块通过硬件强制产生一个断电之后,处理器才进入调试模式。
当从调试模式退出时,处理器恢复进入调试模式以前的状态。
5、Nios的异常分类
Nios的异常包括:
硬件中断和软件异常。
软件异常可分为软件陷阱异常、未定义指令异常和其他异常。
硬件中断:
status中PIE位为1,中断请求irqn有效,ienable寄存器相应位为1,硬件才能产生中断。
软件陷阱:
当执行程序中的trap指令时,产生软件陷阱异常。
未定义指令异常:
当处理器执行未定义指令时(不是硬件实现的有效指令)产生未定义指令异常。
异常处理判断哪个指令产生异常,如果指令不能通过硬件执行,可以在一个异常服务程序中通过软件方式执行。
其他异常:
其它异常类型是为将来系统扩展准备的。
中断处理流程:
(1)把status寄存器内容复制到estatus寄存器中,保存当前处理器状态;
(2)清除status寄存器的U位为0,强制处理器进入超级用户状态;
(3)清除status寄存器的PIE位为0,禁止所有的硬件中断;
(4)把异常返回地址写入ea寄存器(r29);
(5)跳转到异常处理地址。
异常处理优先级:
硬件中断>软件陷阱>未定义指令>其它异常
6、Nios的内核类型
NiosII/f(快速):
性能最高,但占用的逻辑资源最多。
NiosII/e(经济):
占用的逻辑资源最少,但性能最低。
NiosII/s(标准):
平衡的性能和尺寸。
NiosII/s内核比第一代的NiosCPU更快,占用的资源更少。
7、掌握Avalon从端口的信号,分析基本的从端口的读写时序
从端口传输常用的信号:
1.address信号2.readdata、writedata信号3.chipselect、read、write信号4.byteenable、writebyteenable信号5.begintransfer信号6.irq、reset、clk、waitrequest信号:
信号类型
宽度
方向
必需
功能及使用描述
基本
信号
类型
clk
1
In
No
Avalon从端口的同步时钟,所有的信号必须与clk同步,异步外设可以忽略clk信号。
chipselect
1
In
No
Avalon从端口的片选信号,片选有效时才接受一次传输,无效时忽略传输周期。
address
1~32
In
No
连接Avalon交换架构和从端口的地址线,指定了从外设地址空间的一个字的地址偏移。
可以访问一个字,从每个地址访问一个完整的数据单元(其位数取决于与readdata、writedata宽度)。
read
1
In
No
读从端口的请求信号。
当从端口不输出数据时不使用该信号。
若使用了该信号,则必须使用readdata或data信号。
readdata
(注)
1~1024
Out
No
读传输时,输出到Avalon交换架构的数据线。
若使用了该信号,则data信号不能使用。
write
1
In
No
写从端口的请求信号。
当从端口不从Avalon交换架构接收数据,不需要该信号。
若使用了该信号,必须使用writedata或data信号,writebyteenable信号不能使用。
writedata
(注)
1~1024
In
No
写传输时,来自Avalon交换架构的数据线。
若使用了该信号,data信号不能使用。
byteenable
2,4,6,8,16,32,64,128
In
No
字节使能信号。
在对宽度大于8位的存储器进行写传输时,该信号用于选择特定的字节段。
若使用了该信号,writedata信号页必须使用,writebyteenable信号不能使用。
writebyteen
able
2,4,6,8,16,32,64,128
In
No
相当于byteenable信号和write信号的逻辑与操作。
若使用了该信号,writedata信号必须使用,write和byteenable信号不能使用。
begintransfer
1
In
No
在每次传输的第一个周期内有效,使用用法取决于具体的外设。
其它
信号
Irq
1,32
In
No
中断请求信号。
如果Irq信号是一个32位的矢量信号,那么它的每一位直接对应一个从端口上的中断信号,它与中断优先级没有任何的联系;如果Irq是一个单比特信号,那么它是所有从外设的Irq信号的逻辑或,中断优先级由irqnumber信号确定。
irqnumber
6
In
No
只有在irq信号为单比特信号时,才使用irqnumber信号来确定外设的中断优先级。
Irqnumber的值越小,所代表的中断优先级越高。
reset
1
In
No
全局复位信号。
实现跟外设相关。
resetrequest
1
Out
No
允许外设将整个Avalon系统复位。
复位操作立即执行。
注:
如果从端口使用动态地址对齐,信号宽度必须是2的幂
如果从端口同时使用readdata和writedata信号,这两个信号的宽度必须相等
如果从端口使用动态地址对齐,信号宽度必须是2的幂。
从端口的基本读传输:
从端口的基本写传输:
主端口信号:
信号类型
信号宽度
方向
必需
功能及使用描述
基本
信号
类型
clk
1
In
Yes
Avalon主端口的同步时钟,所有的信号必须与clk同步。
waitrequest
1
In
Yes
迫使主端口等待,直到Avalon交换架构准备好处理传输。
address
1~32
Out
Yes
从Avalon主端口到Avalon交换架构的地址线。
该信号表示的是一个字节的地址,但主端口只发出字边界的地址。
read
1
Out
No
主端口的读请求信号。
主端口不执行读传输时不需要该信号。
如果使用了该信号,readdata或data信号线必须使用。
readdata
8,16,32,64,128,256,512,1024
In
No
读传输时,来自Avalon交换架构的数据线。
当主端口不执行读传输时,不需要该信号。
如果使用了该信号,read信号必须使用,data信号不能使用。
write
1
Out
No
主端口的写请求信号。
不执行写传输时不需要该信号。
如果使用该信号,writedata或data信号必须使用。
writedata
8,16,32,64,128,256,512,1024
Out
No
写传输时,到Avalon交换架构的数据线。
当主端口不执行写传输时,不需要该信号。
如果使用了该信号,write信号必须使用,data信号不能使用。
byteenable
2,4,6,8,16,
32,64,128
Out
No
字节使能信号。
在对宽度大于8位的存储器进行写传输时,该信号用于选择特定的字节段。
读传输时,主端口必须置所有的byteenable信号线有效。
其它
信号
Irq
1,32
In
No
中断请求信号,如果Irq信号是一个32位的矢量信号,那么它的每一位直接对应一个从端口上的中断信号,它与中断优先级没有任何的联系;如果Irq是一个单比特信号,那么它是所有从外设的Irq信号的逻辑或,中断优先级由irqnumber信号确定。
irqnumber
6
In
No
只有在irq信号为单比特信号时,才使用irqnumber信号来确定外设的中断优先级。
Irqnumber的值越小,所代表的中断优先级越高。
reset
1
In
No
全局复位信号。
实现跟外设相关。
resetrequest
1
Out
No
允许外设将整个Avalon系统复位。
复位操作立即执行。
注:
如果主端口同时使用readdata和writedata信号,两个信号的宽度必须相等。
Avalon从端口没有任何信号是必须的
Avalon主端口必须有三个信号:
clk、address、waitrequest
前面所述的Avalon信号类型都是高电平有效的,Avalon接口规范也提供低电平有效的信号类型,在相应的信号类型名后添加”_n”表示。
8、Avalon总线的特点
1)简单性:
易于理解、易于使用。
2)占用资源少:
减少对FPGA片内资源的占用。
3)高性能:
Avalon总线可以在每一个总线时钟周期完成一次数据传输。
4)专用的地址总线、数据总线和控制总线:
简化Avalon总线模块和片上逻辑之间的接口,Avalon外设不需要识别数据和地址周期。
5)强数据宽度支持能力:
支持高达1024位的数据宽度,支持不是2的偶数幂的数据宽度。
6)支持同步操作:
所有Avalon外设的接口与Avalon交换架构的时钟同步,不需要复杂的握手/应答机制,简化了Avalon接口的时序行为,便于集成高速外设。
7)支持动态地址对齐:
Avalon总线可以处理具有不同数据宽度的外设间的数据传输,其自动地址对齐功能将自动解决数据宽度不匹配的问题。
8)开放性:
Avalon总线规范是一个开放的标准,用户可以在XX的情况下使用Avalon总线接口自定义外设。
9、IP核分为软核、硬核和固核,解释其含义
软核(SoftIPCore)
以HDL文本形式提交给用户,它已经过RTL级设计优化和功能验证,但其中不含任何具体的物理信息。
固核(FirmIPCore)
介于软核和硬核之间,除了完成软核所有的设计外,还完成了门级电路综合和时序仿真等设计环节。
硬核(HardIPCore)
基于半导体工艺的物理设计,已有固定的拓扑布局和具体工艺,并已通过工艺验证,具有可保证的性能。
10、PIO核四个寄存器是什么,解释其含义。
当基地址为0x10时,其四个寄存器的地址分别为多少?
分析边沿捕获寄存器的数
四个寄存器地址分别为:
0x10、0x14、0x18、0x1c。
(错位连接)
编程范例:
intg;
staticvoidhandle_button_interrupts(void*context,alt_u32id)
{//按键中断处理函数
…………
g=IORD_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE);//读边沿寄存器捕获的按键状态
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE,0);//向边沿寄存器写任意值清零
}
staticvoidinit_button_pio()
{//按键中断初始化
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE,0x0F);//向相应位写1使能中断
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE,0x05);//边沿寄存器清零
alt_irq_register(PIO_KEY_IRQ,NULL,handle_button_interrupts);//按键中断函数注册
}
边沿捕获寄存器:
注意边沿捕获寄存器的中断使能,只有使能才会在相应按键变动时触发中断,但是中断程序不执行不代表边沿捕获寄存器不读取按键状态,只是不赋值而已(实验中的g)。
边沿捕获寄存器置一后如果不通过写数清零则始终为1.
11、Timer核的计数模式
status状态寄存器:
control控制寄存器
PERIODH、PERIODL为定时器计数值的高16位与低16位。
编程范例:
staticvoidTimer0_Irq_Handler(void*context,alt_u32id)
{//中断处理函数
………………
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0);//清除中断标志位
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE,0x05);
}
staticvoidTimer0_ISR_Init(void)
{
printf("\nTimerInitial!
\n");
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_0_BASE,0);//清除中断标志位
alt_irq_register(TIMER_0_IRQ,NULL,Timer0_Irq_Handler);//中断函数注册
IOWR_ALTERA_AVALON_TIMER_PERIODL(TIMER_0_BASE,50000);
IOWR_ALTERA_AVALON_TIMER_PERIODH(TIMER_0_BASE,1000);//函数计数值写入
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_0_BASE,0x05);//配置计数器工作状态
}
12、FPGA中PLL的作用是什么,其输入端连接什么信号?
有几个输出端,分别连接到什么信号上?
参照图1-6
PLL(锁相环)作用:
实现两个不同设备之间的时钟同步,减小相移,从而减小和调整时钟信号的延时和建立时间。
输入短接入四个时钟信号,每次只能选择其中的一个端输入,有四个输出端,其中三个为全局时钟,为内部提供始终信号,另外一个为PLL_OUT,为外部的时钟输出信号。
13、AlteraEP2C35有几个PLL,每个有几个输出
四个PLL,每个有四个全局时钟输出
14、Alt_irq_register里面的三个参数是什么,分别代表什么意义?
以PIO中断为例进行说明
中断注册函数:
中断处理函数:
voidisr(void*context,alt_u32id)参数意义与上相同。
范例:
alt_irq_register(PIO_KEY_IRQ,edge_capture_ptr,handle_button_interrupts)
PIO_KEY_IRQ是按键中断号,edge_capture_ptr是传递给中断服务程序的参数(一般为NULL),handle_button_interrupts是中断服务子程序的开始地址,也就是函数名。
15、添加基于Avalon接口外设的基本流程
(1)指定硬件功能
(2)指定微处理器访问和控制该硬件的应用程序接口
(3)定义一个AVALON接口:
提供正确的控制机制、足够的吞吐性能
(4)采用VHDL或Verilog编写硬件设计
(5)单独测试硬件设计
(6)编写C头文件,定义寄存器映射
(7)使用元件编辑器将硬件和软件文件打包成一个元件
(8)例化元件为SOPC系统的一个模块
(9)使用NIOSII处理器测试元件的寄存器级访问
(10)编写元件的驱动程序
(11)反复改进元件的设计:
硬件、软件、元件更新
(12)编译完整的包含一个或多个该元件的SOPC系统
(13)执行系统级的验证,若必要,进行反复设计
(14)完成元件设计,发布共享元件
16、什么是静态地址,什么是动态地址?
静态地址对齐,当主端口从宽度较小的从端口读数据,从端口接到主端口地位,高位填充为0,写数据时,高位忽略。
主端口不能访问宽度比它大的从端口。
动态地址对齐,高位的主端口数据字节与从端口地址空间中的下一个位置对应。
当主端口从宽度较小的从端口读数据,从端口执行多次读传输(32位主端口与16位从端口,从端口每次读两次以填满32位),写数据时一样。
17、SDRAM的地址范围为base:
700000end:
7fffff分别指什么意义
SDRAM为存储器,base:
700000为存储器起始地址,end:
7fffff为终止地址。
对应
18、什么是静态功耗?
什么是动态功耗?
动态功耗分为几种
总功耗=静态功耗+动态功耗
静态功耗是指逻辑门没有开关活动时的功率消耗,主要由泄漏电流造成的,随温度和工艺的不同而不同主要取决于所选的FPGA芯片产品(工艺技术);
动态功耗是指逻辑门开关活动时的功率消耗,器件内的容性负载充放电(因素很多,本质上更取决于设计),动态功耗是电压、电容、资源使用率、翻转频率的函数。
动态功耗主要体现为存储器,内部逻辑、时钟、I/O消耗的功耗。
19、什么是建立时间,什么是保持时间,要求会计算建立时间和保持时间的datatimeArrival、datatimerequired和slack
建立时间(Tsu:
setuptime)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;Tsu 保持时间(Th: holdtime)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。 Th DataArrivalTime=launchedge+Tclk1+Tco+Tdata ClokArrivalTime=launchedge+Tclk2 DataRequiredTime(Setup)=ClokArrivalTime–Tsu-SetupUncertainty DataRequiredTime(Hold)=ClokArrivalTime+Th+SetupUncertainty SetupSlack=DataRequiredTime(Setup)-DataArrivalTime HoldSlack=DataArrivalTime(Hold)-DataRequiredTime 20、NIOSⅡ系统的寻址方式 1)立即数寻址: 指令直接给出操作数。 2)寄存器寻址: 所有的操作数都是寄存器,结果保存在寄存器中 3)移位寻址: 寄存器和带符号的16位立即数相加的结果作为地址 4)寄存器间接寻址: 移位量为0的移位寻址 5)绝对寻址: 按照指令中指定的固定地址进行数据寻址。 范围有限制的绝对寻址使用带有寄存器r0(它的值始终是0x00)的移位寻址实现。 21、SoPCBuilder中复位地址和异常地址 复位地址为存储器(SDRAM)中的0x00,异常地址为存储器中的0x20。 22、基于NiosII的SoPC系统开发整体流程图5-1,(p188) 1. Nios的特点? 2.Nios的内核类型 3.Avalon接口的复位信号,Avalon主端口的中断信号。 Avalon主端口信号,SoPCBuilder中复位地址和异常地址 4.Nios的三种操作模式,如何进行切换? 5.Nios的异常分类 6.AlteraEP2C35有几个PLL,每个有几个输出 7.掌握Avalon从端口的信号,分析基本的从端口的读写时序 8.基于NiosII的SoPC系统开发整体流程图5-1,(p188) 9.IP核分为软核、硬核和固核,解释其含义 10.PIO核四个寄存器是什么,解释其含义。 当基地址为0x10时,其四个寄存器的地址分别为多少? 分析边沿捕获寄存器的数据 11.Timer核的计数模式 12Alt_irq_register里面的三个参数是什么,分别代表什么意义? 以PIO中断为列进行说明、 13.添加基于AVALON接口外设的基本流程 14.什么是静态地址,什么是动态地址? SOPCbuilder中pio_key的base地址为0x50,end地址为0x0f, 13.什么是SoPC? 英文全称是什么? 列举3种构成SoPC的方案? 15.什么是静态功耗? 什么是动态功耗? 动态功耗分为几种 16.什么是建立时间,什么是保持时间,要求会计算建立时间和保持时间的datatimerequires、datatimerequired和slack 17.编写循环点亮LED灯的程序 试题类型: 填空,简答,分析,程序设计
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- sopc 考试 复习