收藏 分销(赏)

modelsim仿真测试实验三.doc

上传人:s4****5z 文档编号:8727679 上传时间:2025-02-27 格式:DOC 页数:19 大小:1.82MB 下载积分:10 金币
下载 相关 举报
modelsim仿真测试实验三.doc_第1页
第1页 / 共19页
modelsim仿真测试实验三.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
实验3.1. modelsim仿真测试 一、实验目的 1、分析分频器的VHDL代码,了解信号和变量的差别。 2、学习modelsim软件环境下,采用测试向量进行测试的方法。包括:激励文件的建立和测试实现。 二、实验步骤 1.1. modelsim的批处理操作流程 建立一个工程File->New Project Wizard, 信号描述 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div_Signal is generic (div_nx2:positive:=4); port ( clk: in std_logic; q: out std_logic); end div_Signal; architecture behav of div_Signal is SIGNAL fre_N : integer range 0 to div_nx2:=0; SIGNAL clk_tmp: std_logic:=’0’; BEGIN q <= clk_tmp; process(clk) begin if clk'event and clk = '1' then if fre_N >= div_nx2 - 1 then fre_N <= 0; clk_tmp <= not clk_tmp; else fre_N <= fre_N + 1; end if; end if; end process; end behav; 变量描述: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity div_var is generic (div_nx2:positive:=4); Port ( CLK : in std_logic; clkout: out std_logic); end div_var; architecture Behavioral of div_var is signal Clk_Out : std_logic:='0'; begin process(CLK) variable fre_N:integer range 0 to div_nx2:=0; begin if rising_edge(CLK) then if fre_N>=div_nx2-1 then fre_N := 0; Clk_Out <= not Clk_Out; else fre_N:=fre_N+1; end if; end if; end process; clkout <= Clk_Out; end Behavioral; 方法1: 方法2: 存为:div_signal_do.do vsim work.div_signal add wave sim:/div_signal/* force -freeze sim:/div_signal/clk 1 0, 0 {10 ns} -r 20 run 400ns 在编译后,获得了逻辑网表,但未开始仿真。可以直接运行DO文件。 点击Next,我们将其工程存储在D:\Temp\ex1下(注意:存储路径中一定不能有空格或中文,否则找不到相关文件),工程命名为ex1,如下所示 1.2. 使用测试向量testbench 新建项目,添加新文件: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity cntx is port(clk,rst,en: in std_logic; q: out std_logic_vector(3 downto 0)); end cntx; architecture behave of cntx is signal q_n: std_logic_vector(3 downto 0); begin process(clk, rst, en, q_n) begin if (rst = '1') then q_n <= (others => '0'); elsif rising_edge(clk) then if en = '1' then q_n <= q_n + 1; end if; end if; end process; q <= q_n; end behave; LIBRARY ieee ; USE ieee.std_logic_1164.all ; USE ieee.STD_LOGIC_UNSIGNED.all ; ENTITY cntx_tb IS constant ClkPeriod: time := 20 ns; END ; ARCHITECTURE cntx_tb_arch OF cntx_tb IS SIGNAL q : std_logic_vector (3 downto 0) ; SIGNAL clk,en,rst : STD_LOGIC ; COMPONENT cntx PORT ( q : out std_logic_vector (3 downto 0) ; clk,en,rst : in STD_LOGIC ); END COMPONENT ; BEGIN DUT : cntx PORT MAP (q=>q ,clk=>clk, en=>en ,rst=> rst); simProcess: process begin rst <= '1'; wait for 50 ns; rst <= '0' ; wait for 1000 ns; rst <= '0' ; end process simprocess; en <= '0' after 0 ns, '1' after 50 ns, '0' after 850 ns, '1' after 900 ns; ClockProcess: process(clk, rst) begin if (rst = '1') then clk <= '0'; else clk <= not clk after ClkPeriod; end if; end process ClockProcess; END ; 打开菜单simulate\start simulation: 实验3.2. 基于SOPC的跑马灯 一、实验目的 1、熟悉用Quartus II 进行嵌入式最小系统开发的基本流程。 2.熟悉用SOPC Builder 进行Nios II CPU 开发的基本流程。 3.熟悉用Nios II IDE 进行汇编代码的编写、下载的基本过程,通过Nios II IDE集成开发平台调试软件。 二、实验原理 SOPC(system on a programmable chip ),就是把一个系统集成在单片可编程芯片中。而一个基于Nios II软核处理器的嵌入式最小系统,至少要包含一个NIOS II软核处理器、一个随机存储器(RAM)、Flash ROM(存储代码、数据等)和一个外部设备。为了方便初学可以进一步简化系统,采用RAM的一段存储区来代替ROM,并只管理一个芯片外部的设备(LED灯)。 三、实验内容 学习基于NIOS II软核处理器的嵌入式系统开发流程,按照实验步骤,设计完成一个最简系统,实现8个LED发光二极管的循环发光显示。系统的基本开发流程包括: (1) 实验准备。 (2) 在Quartus II 中新建一个工程项目,便于整个硬件系统的项目管理。 (3) 在SOPC Builder 中根据需要加入软核处理器和各种IP 核,配置系统的硬件结构。 (4) 在Quartus II环境下,生成SOPC Builder配置的一个应用实例,并对实例的管脚进行设置,编译硬件逻辑系统。 (5) 下载逻辑结构到FPGA芯片中。 (6) 在Nios II IDE 平台下新建一个软件项目,根据(3)中配置的结构和硬件地址,编写软件代码。 (7) 编译、下载并通过指令集仿真器调试软件代码,查看运行结果,直到正确。根据需要,将(6)中编译生成的软件代码下载到硬件平台的代码Flash 中。。 四、实验步骤 1、建立一个工程。 File->New Project Wizard, 点击Next,设置如下所示 然后,点击Next,如下所示 这一页不需要修改,点击Next,如下图所示,Family:CYCLONE IV E,芯片选择:EP4CE15F17C8,这里面有个地方需要说明一下EP4CE15F17C8N,N是代表无铅,跟芯片型号没关系;而EP4CE15F17C8L癿L是低电压的意思,就是说这个是低电压版本。这个地方大家要注意下,我们使用的是正常的版本,即型号为EP4CE15F17C8。如下图红圈处。 然后点击Next,Next,Finish,完成工程建立。 点击tool/sopc builder: package require ::quartus::project set_location_assignment PIN_M1 -to reset set_location_assignment PIN_R9 -to clk50m set_location_assignment PIN_J1 -to led[0] set_location_assignment PIN_J2 -to led[1] set_location_assignment PIN_K1 -to led[2] set_location_assignment PIN_K2 -to led[3] 重新编译系统,下载硬件到FPGA实验板。然后打开软件开发环境: 第一次运行,可能会要求设置工作目录,可改为项目路径,如:d:\codework 打开 typedef signed char alt_8; typedef unsigned char alt_u8; typedef signed short alt_16; typedef unsigned short alt_u16; typedef signed long alt_32; typedef unsigned long alt_u32; typedef long long alt_64; typedef unsigned long long alt_u64; #include "system.h" #include <alt_types.h> #include "altera_avalon_pio_regs.h" void delay(void) { unsigned int i; i=100000; while(i>0) { i--; } } int alt_main(void) { unsigned char led_data; unsigned int led_code; while(1) { for(led_data=0;led_data<4;led_data++) { led_code=0x01<<led_data; IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,~led_code); delay(); } } return 0; } #include "system.h" #include <alt_types.h> #include "altera_avalon_pio_regs.h" int main() { alt_u8 led_data=0x2; alt_u8 dir=0; volatile int i; while(1) { if(led&0x9){dir=(dir^0x1)} if(dir)led=led>>1; else{led<<1;} IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,led); i=0; while(i<200000)i++; } return 0; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服