1、什么是哈佛结构和冯·诺伊曼(V on Neuman)结构?它们有什么区别?答:(1)冯·诺伊曼(V on Neuman)结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
(2)哈佛(Harvard)结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
两者区别:哈佛(Harvard)结构:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
冯·诺伊曼(V on Neuman)结构:当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
2、TMS320VC5416-160的指令周期是多少毫秒?它的运算速度是多少MIPS?答:TMS320VC5416-160的指令周期16ns,它的运算速度是160MIPS。
3、TMS320C54x芯片的流水线操作共有多少个操作阶段?每个阶段执行什么任务?完成一条指令都需要哪些操作周期?答:(1)六个操作阶段。
(2)各个阶段执行的任务:①预取指P:将PC中的内容加载到PAB②取指F:将读取到的指令字加载到PB③译码D:将PB的内容加载IR,对IR的内容译码④寻址A:CPU将数据1或数据2的读地址或同时将两个读地址分别加载到数据地址总线DAB和CAB中,并对辅助寄存器或堆栈指针进行修正。
⑤读数R:将读出的数据1和数据2分别加载到数据总线DB和CB中。
若是并行操作指令,可同时将数据3的写地址加载到数据地址总线EAB中。
⑥执行X:执行指令,写数据加载EB。
(3)完成一条指令需要的周期:需要:预取指周期、取指周期、译码周期、寻址周期和读数周期。
4、TMS320VC5402共有多少可屏蔽中断?它们分别是什么?NMI和RS属于哪一类中断源?答:(1)TMS320VC5402有13个可屏蔽中断。
(2)TMS320VC5402有的13个可屏蔽中断分别是:(课本56页最下面)属于外部硬件中断。
NMI和RS)3(.5、试分析下列程序的流水线冲突,画出流水线操作图。
如何解决流水冲突?STLM A,AR0STM#10,AR1LD*AR1,B答:流水线图如下图:解决流水线冲突:最后一条指令(LD*AR1,B)将会产生流水线冲突,在它前面加入一条NOP指令可以解决流水线冲突。
6、已知(1030H)=0050H,AR2=1040H,AR3=1060H,AR4=1080H。
MVKD1030H,*AR2MVDD*AR2,*AR3MVDM1060H,AR4运行以上程序后,(1030H)、(1040H)、*AR3和AR4的值分别等于多少?答:(1030H)=0050H,(1040H)=0050H,*AR3=0050H,AR4=0050H7、已知,(1080H)=0020H、(1081H)=0030H。
STM#1080H,AR0STM#1081H,AR1LD*AR0,16,BADD*AR1,B运行以上程序,B等于多少?0030H=0020)B(答:8、试阅读以下程序,分别写出运行结果。
(1).bss x,4.datatable:.word4,8,16,32……STM#x,AR1RPT#2MVPD table,*AR1+答:数据表table中的常量4传送到以变量x的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+1的地址为地址的存储单元中;数据表table中的常量16传送到以变量x+2的地址为地址的存储单元中。
x,42).bss(.datatable:.word4,8,16,32……STM#x,AR1RPT#2MVPD table,*+AR2答:数据表table中的常量4传送到以变量x的地址为地址的存储单元中;数据表table中的常量8传送到以变量x+1的地址为地址的存储单元中;数据表table中的常量16传送到以变量x+2的地址为地址的存储单元中。
9、NOP指令不执行任何操作,它有什么作用?答:延时几个周期,避免流水线冲突;需要精确延时程序时,可能也会用到NOP指令。
10.说明.text段、.data段和.bss段分别包含什么内容?答:.text段(文本段),通常包含可执行代码;.data段(数据段),通常包含初始化数据;.bss段(保留空间段),通常为未初始化变量保留存储空间。
11.链接器能完成什么工作?链接器命令文件中,MEMORY命令和SECTIONS命令的任务是什么?答:链接器将各个目标文件合并起来,并完成如下工作:(1)将各个段配置到目标系统的存储器。
(2)对各个符号和段进行重新定位,并给它们指定一个最终的地址。
(3)解决输入文件之间的未定义的外部引用。
MEMORY命令的作用:MEMORY命令用来建立DSP应用系统中的存储器模型。
通过这条命令,可以定义系统中所包含的各种形式的存储器,以及它们占用的地址范围。
SECTION命令的作用:说明如何将输入段结合成输出段;在可执行程序中定义输出段;规定输出段在存储器中的存储位置;允许重新命名输出段。
.12.在堆栈操作中,PC当前地址为4020H,SP当前的地址为0013H,运行PSHM AR7的值分别为多少?和SP后,PCSP=0012H答:PC=4021H;试写出以下两条指令的运行结果:13.①EXPA A=FFFD876624T=0000的值各是多少?、T则以上指令执行后,B T=5答:A=0xFFFD876624;B②NORMT=FFF9B=420D0D0D0D,T的值各是多少?则以上指令执行后,B、B=0x841A1A1A,T=FFF9答:14.阅读以下程序,写出运行结果。
y,5.bss1,2,3,4,5table.wordAR2STM#y,#5RPTtable,*AR2+MVPD#0,B LDAR5LD#81h,#0,A STM#4,BRC STM#y,AR5STMsub-1RPTB*ARM5,B,A ADD A,*AR5+STL#0,B LD sub:)的值分别是多少?)和(,(84H85H)))运行以上程序后,(81H,(82H,(83H。
=#5)85H(,=#4)84H(,=#3)83H(,=#2)82H(,=#1)81H(答:滤波器的算法为,试用线性缓冲aaaaa x(n)+x(n-3)+15.FIR x(n-1)+y(n)=x(n-2)+x(n-4)42013区和直接寻址的方法实现。
“FIR1.ASM”.title答:.mmregs.def start“x”,ectPA0.set0PA1.set1.data1*32768/10;定义:a=COEF0.1.word4-3*32768/10;定义a=.word-0.335*32768/10;定义a=-0.5.word2-3*32768/10;定义a=.word-0.311*32768/10;定义a=-0.1.word0.text SSBXstart:FRCT#x+5,AR2STM STM#4,AR0#x+1,DPLD PORTR PA1,@x+1RPTZA,#4FIR1:*AR2-,COEF,AMACD A,*AR2STH*AR2+,PA0PORTWBDFIR1PORTR PA1,*AR2+0.end16.试用线性缓冲区和间接寻址的方法实现上题算法的FIR滤波器。
答:.title“FIR2.ASM”.mmregs.def start.bss y,1.usect“xn”,5xnb0 ect“0”,5PA0.set0PA11.set.data1*32768/10;定义table:a=0.1.word4-3*32768/10;定义a=.word-0.335*32768/10;定义 a.word=-0.52-3*32768/10;定义.word a=-0.311*32768/10;定义a=-0.1.word0.text SSBXFRCTstart:STM#a0,AR1#4RPT table,*AR1+MVPD#xn+4,AR2STM STM#b0+4,AR3STM#5,BK STM#-1,AR0LD#xn,DP PA1,@xn PORTR RPTZA,#4FIR2:MAC*AR2+0%,*AR3+0%,AA,@y STH PORTW@y,PA0BDFIR2PORTR PA1,*AR2+0%.end试分别说明下列有关定时器初始化和开放定时中断语句的功能:17.①STM#0080H,IFR答:清除定时器中断1标志位②STM#0080H,IMR答:允许定时器T1或DMAC1中断(使用哪一种中断由DMA通道优先级和使能控制寄存器DMPREC控制。
在复位以后,中断被配置为定时器T1中断)。
INTM③RSBX答:使能所有可屏蔽中断。
④STM#0279H,TCR答:设置定标计数器的值PSC为9;定时器分频系数为9;以PRD中的值加载TIM,以TDDR中的值加载PSC;定时器停止工作。
18.假设时钟频率为40MHZ,试编写在XF端输出一个周期为2ms的方波的程序。
答:(定时半周期=CLKOUT*(TDDR+1)*(PRD+1);1/2T=(1/40M)*(9+1)*(3999+1)=1ms);abc1.asm;定时器0寄存器地址TIM0.set0024HPRD0.set0025HTCR0.set0026H;K_TCR0:设置定时器控制寄存器的内容.set0b;K_TCR0_SOFTSoft=0.set0b;K_TCR0_FREEFree=0K_TCR0_PSC.set1001b;PSC=9HK_TCR0_TRB.set1b;TRB=1K_TCR0_TSS.set0b;TSS=0.set1001b K_TCR0_TDDR;TDDR=9K_TCR0.set K_TCR0_SOFT|K_TCR0_FREE|K_TCR0_PSC|K_TCR0_TRB|K_TCR0_TSS|K_TCR0_TDDR;初始化定时器0;Tt=25*(9+1)*(3999+1)=1000000(ns)=1(ms)STM#3999,TIM0STM#3999,PRD0STM#K_TCR0,TCR0;启动定时器0中断RET;定时器0的中断服务子程序:通过引脚XF给出.usect“vars”,1;若t0_flag=1则XF=1,若t0_flag=0t0_flag则XF=0time0_rev:PSHM TRNPSHM TST0PSHMST1PSHMt0_flag,BITF#1xf_out,NTC BCXF SSBX#0ST,t0_flagnext B.xf_out:RSBX XF#1,ST t0_flagST1POPMnext:POPM ST0POPM TPOPM TRNRETE19.试分别说明下列语句的功能:#SPCR10,SPSA0①STM#0001H,BSP0STM答:对串口控制寄存器SPCR10赋值。