1、基于XILINXFPGA数字系统设计实验三 数字系统设计-实验三VHDL比较器及自定义IP核 实验 一、实验内容:本次实验完成两个内容。1、VHDL比较器实验2、MicroBlaze 自定义IP核实验 二、实验目的:1学习使用assert语句2学习使用VHDL中的基本条件描述结构if/else3用行为描述方式和RTL描述方式分别对给定的模块进行描述4验证设计文件的正确性三、实验步骤: 一、VHDL比较器实验1创建一个新的工程。2创建COMP的行为描述(如图所示)。3完成模块的结构体描述本步骤主要完成行为描述方式的结构体,最主要的目的是进行仿真。由VHDL的assert语句比较两个输入信号,并配
2、以severity level和report结构完成比较。用条件信号赋值语句对输出信号RESULT赋值。实验中用到的代码如下:COMP.VHDlibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity COMP is Port ( EN : in STD_LOGIC; CLK : in STD_LOGIC; EXPECTED : in STD_LOGIC_VECTOR (3 downto 0); ALU_OUT : in STD_LOGI
3、C_VECTOR (3 downto 0); RESULT : out STD_LOGIC);end COMP;architecture Behavioral of COMP isbeginprocess ( CLK ) begin if rising_edge ( CLK) then if (EN = 1) then if ( EXPECTED = ALU_OUT )then RESULT = 1; else RESULT = 0 ; end if; assert (EXPECTED = ALU_OUT ) report Warning, simulation mismatch has oc
4、curred severity warning ; end if; end if ; end process; end Behavioral;COMP_RTL.VHDlibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity COMP_RTL is Port ( EN : in STD_LOGIC; CLK : in STD_LOGIC; EXPECTED : in STD_LOGIC_VECTOR (3 downto 0); ALU_O
5、UT : in STD_LOGIC_VECTOR (3 downto 0); RESULT : out STD_LOGIC);end COMP_RTL;architecture RTL of COMP_RTL isbeginprocess ( CLK ) begin if rising_edge ( CLK ) then if EN = 1 then if EXPECTED = ALU_OUT then RESULT = 1 ; else RESULT 0); signal ALU_OUT : std_logic_vector(3 downto 0) := (others = 0); -Out
6、puts signal RESULT : std_logic; BEGIN - Instantiate the Unit Under Test (UUT) uut: COMP PORT MAP ( EN = EN, CLK = CLK, EXPECTED = EXPECTED, ALU_OUT = ALU_OUT, RESULT = RESULT );CLK = not CLK after 20 ns;TB:processbegin EXPECTED = XA; ALU_OUT = XA; wait for 200 ns; ALU_OUT = XB; wait;end process;END;
7、4语法检查在Sources窗口中选中COMP.VHD,在Processes 窗口中展开Synthesize ,并双击Check Syntax完成以上步骤并且没有语法错误的情况下继续下面的步骤:1创建COMP的RTL描述(1)选择菜单栏中的ProjectNew Source(2)选择左侧VHDL Module右侧file Name栏中填入文件名COMP_RTL。(3)在Define Module 窗口中,将模块的结构体名称改为RTL,并按照行为描述方式中相同的方法填写模块的端口定义。(4)在COMP_RTL的结构体中使用if/else语句描述COMP_RTL的功能。2创建此时平台文件创建一个测试
8、平台文件,并验证COMP模块的功能是否正确。 二、MicroBlaze自定义IP核实验一、实验目的:1创建一个自定义的外围设备并将其添加到IP目录(IP Catalog)下2将该自定义设备添加到你的设计中3添加引脚约束4生成比特流并下载至开发板,检验运行结果二、实验内容:本实验将通过Create and Import Peripheral Wizard创建一个自定义的外围设备,并将它增加到处理器系统中。三、实验过程:本实验将会扩展实验二中的硬件设计,创建一个plb外围设备,并将其关联到spartan-3E板上的LCD显示屏。四、实验步骤1.继续实验二的内容,创建一个lab3文件夹,将lab2中
9、的内容复制到新文件夹中。2.打开Platform Studio ,选择HardwareCreate or Import Peripheral使用向导完成设置。在lab3目录下,打开pcoreslcd_ip_v1_00_adatalcd_ip_v2_1_0.mpd文件在SPLB_Clk端口前添加以下代码: PORT lcd = “”, DIR = O, VEC = 0:6使用向导生成的的HDL模板文件(lcd_ip.vhd 和 user_logic.vhd)创建LCD控制器。你可以使用标准的文本编辑器来修改它们。在pcores lcd_ip_v1_00_ahdlvhdl目录下打开lcd_ip.v
10、hd文件,添加一个宽度为7比特的lcd端口查找文本”-USER”,定位到390行左右,增加端口映射语句。保存并关闭文件。在vhdl目录下,打开user_logic.vhd文件,在USER Ports区域添加lcd端口定义查找文本”-USER” ,定位到132行,添加内部信号声明。 查找文本-USER logic implementation ,定位到146行,添加以下代码:保存并关闭文件选择Project Rescan User Repositories使之前的改动生效。使用System Assemby View 添加lcd_ip实例到PLB总线上。双击LCD_IP核,将其添加到System
11、Assemby View 当中在lcd_ip_0的Bus Connection中,选择mb_plb,将其连接到plb总线上在ports选项卡中,展开lcd_ip_0,选择Make External将lcd端口作为外部端口。点击Addresses选项卡,锁定除lcd_ip_0之外的所有地址将lcd_ip_0的地址大小设为64K,点击Generate Addresses修改system.ucf文件,将lcd控制器绑定到FPGA相应的引脚上。打开system.ucf文件,添加以下代码编译程序下载比特流连接并启动Spartan 3E板。启动一个超级终端。选择Device Configuration Download Bitstream,下载比特流至FPGA
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1