📄 div4_2.vhd
字号:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY div4_2 IS
PORT(
numerator : IN STD_LOGIC_VECTOR (3 DOWNTO 0); --被除数
denominator : IN STD_LOGIC_VECTOR (1 DOWNTO 0); --除数
quotient : OUT BIT_VECTOR (3 DOWNTO 0); --商
remainder : OUT BIT_VECTOR (1 DOWNTO 0) --余数
);
END div4_2;
ARCHITECTURE rtl OF div4_2 IS
--定义一个存储器
TYPE rom_table IS ARRAY (0 TO 63) OF BIT_VECTOR(5 DOWNTO 0);
SIGNAL rom: rom_table;
SIGNAL temp : BIT_VECTOR (5 DOWNTO 0);
BEGIN
--初始化rom
rom(0) <= "000000"; --0/0
rom(1) <= "000000"; --0/1
rom(2) <= "000000"; --0/2
rom(3) <= "000000"; --0/3
rom(4) <= "000000"; --1/0
rom(5) <= "000100"; --1/1
rom(6) <= "000001"; --1/2
rom(7) <= "000001"; --1/3
rom(8) <= "000000"; --2/0
rom(9) <= "001000"; --2/1
rom(10) <= "000100"; --2/2
rom(11) <= "000010"; --2/3
rom(12) <= "000000"; --3/0
rom(13) <= "001100"; --3/1
rom(14) <= "000101"; --3/2
rom(15) <= "000100"; --3/3
rom(16) <= "000000"; --4/0
rom(17) <= "010000"; --4/1
rom(18) <= "001000"; --4/2
rom(19) <= "000101"; --4/3
rom(20) <= "000000"; --5/0
rom(21) <= "010100"; --5/1
rom(22) <= "001001"; --5/2
rom(23) <= "000110"; --5/3
rom(24) <= "000000"; --6/0
rom(25) <= "011000"; --6/1
rom(26) <= "001100"; --6/2
rom(27) <= "001000"; --6/3
rom(28) <= "000000"; --7/0
rom(29) <= "011100"; --7/1
rom(30) <= "001101"; --7/2
rom(31) <= "001001"; --7/3
rom(32) <= "000000"; --8/0
rom(33) <= "100000"; --8/1
rom(34) <= "010000"; --8/2
rom(35) <= "001010"; --8/3
rom(36) <= "000000"; --9/0
rom(37) <= "100100"; --9/1
rom(38) <= "010001"; --9/2
rom(39) <= "001100"; --9/3
rom(40) <= "000000"; --10/0
rom(41) <= "101000"; --10/1
rom(42) <= "010100"; --10/2
rom(43) <= "001101"; --10/3
rom(44) <= "000000"; --11/0
rom(45) <= "101100"; --11/1
rom(46) <= "010101"; --11/2
rom(47) <= "001110"; --11/3
rom(48) <= "000000"; --12/0
rom(49) <= "110000"; --12/1
rom(50) <= "011000"; --12/2
rom(51) <= "010000"; --12/3
rom(52) <= "000000"; --13/0
rom(53) <= "110100"; --13/1
rom(54) <= "011001"; --13/2
rom(55) <= "010001"; --13/3
rom(56) <= "000000"; --14/0
rom(57) <= "111000"; --14/1
rom(58) <= "011100"; --14/2
rom(59) <= "010010"; --14/3
rom(60) <= "000000"; --15/0
rom(61) <= "111100"; --15/1
rom(62) <= "011101"; --15/2
rom(63) <= "010100"; --15/3
--查表得出结果
temp <= rom(CONV_INTEGER(numerator & denominator));
quotient <= temp(5 DOWNTO 2);
remainder <= temp(1 DOWNTO 0);
END rtl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -