基于VHDL移位寄存器程序设计
基于VHDL移位寄存器程序設計
實驗目的
(1) 掌握中規模4位移位寄存器邏輯功能及使用方法。
(2) 學會用VHDL語言設計4位移位寄存器。
實驗原理
移位寄存器是一個具有移位功能的寄存器,是指寄存器中所存的代碼能夠在移位脈沖的作用下依次左移或右移。既能左移又能右移的稱為雙向移位寄存器,只需要改變左、右移位的控制信號便可實現雙向移位要求。根據移位寄存器存取信息的方式不同分為:串入串出、串入并出、并入串出、并入并出四種形式。該實驗設計的是串行輸入并行輸出的左移位寄存器,由頂層文件模塊及D觸發器模塊組成。
實驗內容
(1) 用VHDL編寫移位寄存器源程序。
(2) 將源程序進行綜合、優化及功能仿真。
(3)軟件說明:ModelSimSetup-13.1.0.162,QuartusSetup-13.1.0.162。
建立工程:
第一步:打開Quartus軟件。
第二步:點擊New Project Wizard -> next.
第三步:選擇工程文件的存放位置,輸入工程名 -> next -> next。
第四步:在family欄選擇芯片型號-Cyclone IV E,在Name欄選擇EP4CE115F29C7,選擇完之后點擊next。(如果不進行硬件調試時,此處默認即可)
第五步:檢查工程有沒有建錯,點擊完成。如下圖:
程序設計:
全加器頂層文件設計:
--文件名:shift_req.vhd 應與工程名保持一致:library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity shift_req isPort( a : in std_logic;clk : in std_logic;b: out std_logic_vector(4 downto 0)); end shift_req; architecture gen_shift of shift_req is signal z:std_logic_vector(0 to 4); component dff --D觸發器元件聲明port (d,clk:in std_logic;q:out std_logic); end component; begin -- --方法一 -- z(0)<=a; b<=z(4); -- q1:for i in 0 to 3 generate -- dffx : dff port map(z(i),clk,z(i+1)); -- end generate;--方法二 dff0: dff port map(a,clk,z(0)); --元件例化語句 dff1: dff port map(z(0),clk,z(1)); dff2: dff port map(z(1),clk,z(2)); dff3: dff port map(z(2),clk,z(3)); dff4: dff port map(z(3),clk,z(4)); b<=z; end gen_shift;D觸發器元件進行實例化:
--文件名:dff.vhllibrary IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity dff isPort ( d : in std_logic;clk : in std_logic;q : out std_logic);end dff;architecture Behavioral of dff issignal q_temp:std_logic;beginprocess(clk)beginif(clk'event and clk='1')thenq_temp<=d;end if;end process;q<=q_temp;end Behavioral;文件仿真(這里采用modelsim仿真波形):
2.打開測試文件。(右鍵點擊添加端口,對輸入信號初始化,賦值。)
3.仿真結果:
邏輯電路圖:
顯示編譯成功后,選擇菜單欄 Tools –>Netlist Viewers –>RTL Viewer 顯示邏輯電路圖
總結
以上是生活随笔為你收集整理的基于VHDL移位寄存器程序设计的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32FSMC扩展SRAM
- 下一篇: No constructor found