⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 通用寄存器.vhd

📁 含有各类寄存器
💻 VHD
字号:
--Universal Register--Description - This design is a universal register which can be used as a straightforward storage register, a bi-directional shift register, an up counter and a down counter. The register can be loaded from a set of parallel data inputs--and the mode is controlled by a 3-bit input. The 'termcnt' (terminal count) output goes high when the register contains zero.LIBRARY ieee;USE ieee.Std_logic_1164.ALL;USE ieee.Std_logic_unsigned.ALL;ENTITY unicntr ISGENERIC(n : Positive := 8); --size of counter/shifterPORT(clock, serinl, serinr : IN Std_logic; --serial inputsmode : IN Std_logic_vector(2 DOWNTO 0); --mode controldatain : IN Std_logic_vector((n-1) DOWNTO 0); --parallel inputsdataout : OUT Std_logic_vector((n-1) DOWNTO 0); --parallel outputstermcnt : OUT Std_logic); --terminal count outputEND unicntr;ARCHITECTURE v1 OF unicntr ISSIGNAL int_reg : Std_logic_vector((n-1) DOWNTO 0);BEGINmain_proc : PROCESSBEGINWAIT UNTIL rising_edge(clock);CASE mode IS--resetWHEN "000" => int_reg <= (OTHERS => '0');--parallel loadWHEN "001" => int_reg <= datain;--count upWHEN "010" => int_reg <= int_reg + 1;--count downWHEN "011" => int_reg <= int_reg - 1;--shift leftWHEN "100" => int_reg <= int_reg((n-2) DOWNTO 0) & serinl;--shift rightWHEN "101" => int_reg <= serinr & int_reg((n-1) DOWNTO 1);--do nothingWHEN OTHERS => NULL;END CASE;END PROCESS;det_zero : PROCESS(int_reg) --detects when count is 0BEGINtermcnt <= '1';FOR i IN int_reg'Range LOOPIF int_reg(i) = '1' THENtermcnt <= '0';EXIT;END IF;END LOOP;END PROCESS;--connect internal register to dataout portdataout <= int_reg;END v1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -