您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > modelsim仿真测试实验三
实验3.1.modelsim仿真测试一、实验目的1、分析分频器的VHDL代码,了解信号和变量的差别。2、学习modelsim软件环境下,采用测试向量进行测试的方法。包括:激励文件的建立和测试实现。二、实验步骤1.1.modelsim的批处理操作流程建立一个工程File-NewProjectWizard,信号描述libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitydiv_Signalisgeneric(div_nx2:positive:=4);port(clk:instd_logic;q:outstd_logic);enddiv_Signal;architecturebehavofdiv_SignalisSIGNALfre_N:integerrange0todiv_nx2:=0;SIGNALclk_tmp:std_logic:=’0’;BEGINq=clk_tmp;process(clk)beginifclk'eventandclk='1'theniffre_N=div_nx2-1thenfre_N=0;clk_tmp=notclk_tmp;elsefre_N=fre_N+1;endif;endif;endprocess;endbehav;变量描述:libraryIEEE;useIEEE.STD_LOGIC_1164.ALL;useIEEE.STD_LOGIC_ARITH.ALL;useIEEE.STD_LOGIC_UNSIGNED.ALL;entitydiv_varisgeneric(div_nx2:positive:=4);Port(CLK:instd_logic;clkout:outstd_logic);enddiv_var;architectureBehavioralofdiv_varissignalClk_Out:std_logic:='0';beginprocess(CLK)variablefre_N:integerrange0todiv_nx2:=0;beginifrising_edge(CLK)theniffre_N=div_nx2-1thenfre_N:=0;Clk_Out=notClk_Out;elsefre_N:=fre_N+1;endif;endif;endprocess;clkout=Clk_Out;endBehavioral;方法1:方法2:存为:div_signal_do.dovsimwork.div_signaladdwavesim:/div_signal/*force-freezesim:/div_signal/clk10,0{10ns}-r20run400ns在编译后,获得了逻辑网表,但未开始仿真。可以直接运行DO文件。点击Next,我们将其工程存储在D:\Temp\ex1下(注意:存储路径中一定不能有空格或中文,否则找不到相关文件),工程命名为ex1,如下所示1.2.使用测试向量testbench新建项目,添加新文件:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitycntxisport(clk,rst,en:instd_logic;q:outstd_logic_vector(3downto0));endcntx;architecturebehaveofcntxissignalq_n:std_logic_vector(3downto0);beginprocess(clk,rst,en,q_n)beginif(rst='1')thenq_n=(others='0');elsifrising_edge(clk)thenifen='1'thenq_n=q_n+1;endif;endif;endprocess;q=q_n;endbehave;LIBRARYieee;USEieee.std_logic_1164.all;USEieee.STD_LOGIC_UNSIGNED.all;ENTITYcntx_tbISconstantClkPeriod:time:=20ns;END;ARCHITECTUREcntx_tb_archOFcntx_tbISSIGNALq:std_logic_vector(3downto0);SIGNALclk,en,rst:STD_LOGIC;COMPONENTcntxPORT(q:outstd_logic_vector(3downto0);clk,en,rst:inSTD_LOGIC);ENDCOMPONENT;BEGINDUT:cntxPORTMAP(q=q,clk=clk,en=en,rst=rst);simProcess:processbeginrst='1';waitfor50ns;rst='0';waitfor1000ns;rst='0';endprocesssimprocess;en='0'after0ns,'1'after50ns,'0'after850ns,'1'after900ns;ClockProcess:process(clk,rst)beginif(rst='1')thenclk='0';elseclk=notclkafterClkPeriod;endif;endprocessClockProcess;END;打开菜单simulate\startsimulation:实验3.2.基于SOPC的跑马灯一、实验目的1、熟悉用QuartusII进行嵌入式最小系统开发的基本流程。2.熟悉用SOPCBuilder进行NiosIICPU开发的基本流程。3.熟悉用NiosIIIDE进行汇编代码的编写、下载的基本过程,通过NiosIIIDE集成开发平台调试软件。二、实验原理SOPC(systemonaprogrammablechip),就是把一个系统集成在单片可编程芯片中。而一个基于NiosII软核处理器的嵌入式最小系统,至少要包含一个NIOSII软核处理器、一个随机存储器(RAM)、FlashROM(存储代码、数据等)和一个外部设备。为了方便初学可以进一步简化系统,采用RAM的一段存储区来代替ROM,并只管理一个芯片外部的设备(LED灯)。三、实验内容学习基于NIOSII软核处理器的嵌入式系统开发流程,按照实验步骤,设计完成一个最简系统,实现8个LED发光二极管的循环发光显示。系统的基本开发流程包括:(1)实验准备。(2)在QuartusII中新建一个工程项目,便于整个硬件系统的项目管理。(3)在SOPCBuilder中根据需要加入软核处理器和各种IP核,配置系统的硬件结构。(4)在QuartusII环境下,生成SOPCBuilder配置的一个应用实例,并对实例的管脚进行设置,编译硬件逻辑系统。(5)下载逻辑结构到FPGA芯片中。(6)在NiosIIIDE平台下新建一个软件项目,根据(3)中配置的结构和硬件地址,编写软件代码。(7)编译、下载并通过指令集仿真器调试软件代码,查看运行结果,直到正确。根据需要,将(6)中编译生成的软件代码下载到硬件平台的代码Flash中。。四、实验步骤1、建立一个工程。File-NewProjectWizard,点击Next,设置如下所示然后,点击Next,如下所示这一页不需要修改,点击Next,如下图所示,Family:CYCLONEIVE,芯片选择:EP4CE15F17C8,这里面有个地方需要说明一下EP4CE15F17C8N,N是代表无铅,跟芯片型号没关系;而EP4CE15F17C8L癿L是低电压的意思,就是说这个是低电压版本。这个地方大家要注意下,我们使用的是正常的版本,即型号为EP4CE15F17C8。如下图红圈处。然后点击Next,Next,Finish,完成工程建立。点击tool/sopcbuilder:packagerequire::quartus::projectset_location_assignmentPIN_M1-toresetset_location_assignmentPIN_R9-toclk50mset_location_assignmentPIN_J1-toled[0]set_location_assignmentPIN_J2-toled[1]set_location_assignmentPIN_K1-toled[2]set_location_assignmentPIN_K2-toled[3]重新编译系统,下载硬件到FPGA实验板。然后打开软件开发环境:第一次运行,可能会要求设置工作目录,可改为项目路径,如:d:\codework打开typedefsignedcharalt_8;typedefunsignedcharalt_u8;typedefsignedshortalt_16;typedefunsignedshortalt_u16;typedefsignedlongalt_32;typedefunsignedlongalt_u32;typedeflonglongalt_64;typedefunsignedlonglongalt_u64;#includesystem.h#includealt_types.h#includealtera_avalon_pio_regs.hvoiddelay(void){unsignedinti;i=100000;while(i0){i--;}}intalt_main(void){unsignedcharled_data;unsignedintled_code;while(1){for(led_data=0;led_data4;led_data++){led_code=0x01led_data;IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,~led_code);delay();}}return0;}#includesystem.h#includealt_types.h#includealtera_avalon_pio_regs.hintmain(){alt_u8led_data=0x2;alt_u8dir=0;volatileinti;while(1){if(led&0x9){dir=(dir^0x1)}if(dir)led=led1;else{led1;}IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,led);i=0;while(i200000)i++;}return0;}
本文标题:modelsim仿真测试实验三
链接地址:https://www.777doc.com/doc-2888751 .html