您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 基于FPGA的地址译码实验_实验报告
时域测试技术综合实验报告书实验名称基于FPGA的地址译码实验班级学号姓名实验时间:年月日得分:一、实验目的1.掌握FPGA的基本设计流程;2.掌握DSP的基本开发流程;2.掌握地址译码基本原理;3.理解软件读写硬件端口的底层实现原理。二、实验内容1、用VerilogHDL设计底层译码电路,通过DSP实现对FPGA寄存器端口进行读操作,并确认读出数据正确;2、用VerilogHDL设计底层译码电路,通过DSP实现对FPGA寄存器端口进行写操作。3、对FPGA寄存器进行先写后读操作,在VisualDSP++中调试,确认数据正确。三、实验步骤(给出相应代码及调试环境截图)1、通过DSP实现对FPGA寄存器端口进行读操作;读操作对应FPGA中地址译码VerilogHDL代码:always@(posedgeadsp_clk)beginif(dsp_iord_en_dly==1'b0)case(adsp_addr_decode[7:0])//……8'h9e:beginadsp_databus_rd[15:0]=DECODE_REG[15:0];end8'h9c://0x2010009c地址中固定数据位ox5aa5,用于验证读操作是否正常beginadsp_databus_rd[15:0]=16'h5aa5;end//……endcaseend读操作先对应dsp代码#defineDECODE_REG*(volatileunsignedshort*)0x2010009e//defineanewaddress……intmain(){Set_PLL(16,3);//Init_EBIU();DECODE_REG=0x55;while(1);}2、通过DSP实现对FPGA寄存器端口进行写操作。写操作对应FPGA中地址译码VerilogHDL代码:reg[15:0]DECODE_REG;//定义寄存器always@(posedgeadsp_clkornegedgerst_in)begin//……if(dsp_iowr_en_dly==1'b0)begincase(adsp_addr_decode[7:0])//……8'h9e://定义寄存器对应DSP映射地址为0x2010009ebeginDECODE_REG[15:0]=adsp_databus_wr[15:0];end//…….default:test_reg=0;endcaseendend写操作dsp关键代码#defineDECODE_READ_TEST*(volatileunsignedshort*)0x2010009cintmain(){unsignedintread_num;Set_PLL(16,3);//Init_EBIU();while(1){read_num=DECODE_READ_TEST;//回读地址0x2010009c中的数据,确认是否正确}}3、对FPGA寄存器进行先写后读操作,在VisualDSP++中调试,确认数据正确。intmain(){unsignedintread_num;unsignedintwrite_num;unsignedinti;Set_PLL(40,3);Init_EBIU();uartInit(868);write_num=0;while(1){DECODE_REG=write_num;//将变量write_num写入到寄存器DECODE_REG中read_num=DECODE_REG&0xff;//将寄存器DECODE_REG中的数据读出到read_num中write_num++;i++;}}四、实验思考题1.DSP处理器是如何实现对外部扩展IO的读写访问的?DSP执行的是一个取地址的过程,它通过取地址和运算,把地址单元中存储的数据读过来,或者将特定数据写入到相应地址中,对于DSP来说就是一个读和写的过程。对于外扩IO口,先将其地址映射成内部地址,在进行读写。2.ADSP-BF531的数据总线为16位,如果要对一个大于16位的寄存器(如32位)进行读写操作,应该采取怎样的方法?先传送低16位,在传送高16位,再在芯片内拼接好五、实验结果分析与总结通过这次试验我们了解了FPGA的基本设计流程,学习了DSP的基本开发流程,.地址译码基本原理和软件读写硬件端口的底层实现原理。并在试验中成功通过相关程序验证了地址读写原理。
本文标题:基于FPGA的地址译码实验_实验报告
链接地址:https://www.777doc.com/doc-2534164 .html