1、实验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 (d
2、iv_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
3、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
4、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)
5、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
6、 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(
7、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
8、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 ; ARC
9、HITECTURE 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 (
10、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' a
11、fter 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、熟悉用Quar
12、tus 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
13、的一段存储区来代替ROM,并只管理一个芯片外部的设备(LED灯)。 三、实验内容 学习基于NIOS II软核处理器的嵌入式系统开发流程,按照实验步骤,设计完成一个最简系统,实现8个LED发光二极管的循环发光显示。系统的基本开发流程包括: (1) 实验准备。 (2) 在Quartus II 中新建一个工程项目,便于整个硬件系统的项目管理。 (3) 在SOPC Builder 中根据需要加入软核处理器和各种IP 核,配置系统的硬件结构。 (4) 在Quartus II环境下,生成SOPC Builder配置的一个应用实例,并对实例的管脚进行设置,编译硬件逻辑系统。 (5) 下载逻辑结
14、构到FPGA芯片中。 (6) 在Nios II IDE 平台下新建一个软件项目,根据(3)中配置的结构和硬件地址,编写软件代码。 (7) 编译、下载并通过指令集仿真器调试软件代码,查看运行结果,直到正确。根据需要,将(6)中编译生成的软件代码下载到硬件平台的代码Flash 中。。 四、实验步骤 1、建立一个工程。 File->New Project Wizard, 点击Next,设置如下所示 然后,点击Next,如下所示 这一页不需要修改,点击Next,如下图所示,Family:CYCLONE IV E,芯片选择:EP4CE15F17C8,这里面有个地方需要说明
15、一下EP4CE15F17C8N,N是代表无铅,跟芯片型号没关系;而EP4CE15F17C8L癿L是低电压的意思,就是说这个是低电压版本。这个地方大家要注意下,我们使用的是正常的版本,即型号为EP4CE15F17C8。如下图红圈处。 然后点击Next,Next,Finish,完成工程建立。 点击tool/sopc builder: package require ::quartus::project set_location_assignment PIN_M1 -to reset set_location_as
16、signment 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 打开
17、
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
18、ude "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< 19、 IOWR_ALTERA_AVALON_PIO_DATA(LED_BASE,~led_code);
delay();
}
}
return 0;
}
#include "system.h"
#include






