Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- LIBRARY IEEE;
- USE IEEE.std_logic_1164.all;
- USE IEEE.numeric_std.all;
- ENTITY lab3 IS
- PORT (
- A:in std_logic_vector (15 downto 0);
- Smar,Smbr: bit;
- clk:in std_logic;
- DO:in std_logic_vector (15 downto 0);
- DI:out std_logic_vector (15 downto 0);
- WR, RD :inout bit;
- ADO:out std_logic_vector (15 downto 0);
- DIO:inout std_logic_vector (15 downto 0);
- ohdo:out std_logic_vector (6 downto 0);
- ohdi:out std_logic_vector (6 downto 0);
- ohdio: out std_logic_vector (6 downto 0)
- );
- END lab3;
- ARCHITECTURE beh OF lab3 IS
- signal MAR, MBR1, MBR2 : std_logic_vector (15 downto 0);
- signal HADO, HDI, HDIO: std_logic_vector (15 downto 0);
- BEGIN
- PROCESS (clk)
- BEGIN
- IF (clk'event and clk = '0') THEN
- IF (Smar = '1') THEN
- MAR <= A;
- ADO <= MAR;
- HADO <= MAR;
- --HADO <= ADO;
- END IF;
- IF (Smbr = '1') THEN
- MBR1 <= DO;
- MBR2 <= MBR1;
- DI <= MBR2;
- DIO <= MBR1;
- HDIO <= MBR1;
- END IF;
- IF (WR = '0') THEN
- DIO <= "ZZZZZZZZZZZZZZZZ";
- ELSIF (WR = '1') THEN
- MBR1 <= DIO;
- MBR2 <= MBR1;
- DI <= MBR2;
- END IF;
- IF (RD = '1') THEN
- DIO <= MBR1;
- MBR2 <= MBR1;
- DI <= MBR2;
- HDI <= MBR2;
- END IF;
- CASE (HADO( 3 downto 0)) IS
- WHEN "0000" => ohdo <= "1000000";
- WHEN "0001" => ohdo <= "1111001";
- WHEN "0010" => ohdo <= "0100100";
- WHEN "0011" => ohdo <= "0110000";
- WHEN "0100" => ohdo <= "0011001";
- WHEN "0101" => ohdo <= "0010010";
- WHEN "0110" => ohdo <= "0000010";
- WHEN "0111" => ohdo <= "1111000";
- WHEN "1000" => ohdo <= "0000000";
- WHEN "1001" => ohdo <= "0010000";
- WHEN OTHERS => ohdo <= "1111111";
- END CASE;
- CASE (HDI(3 downto 0)) IS
- WHEN "0000" => ohdi <= "1000000";
- WHEN "0001" => ohdi <= "1111001";
- WHEN "0010" => ohdi <= "0100100";
- WHEN "0011" => ohdi <= "0110000";
- WHEN "0100" => ohdi <= "0011001";
- WHEN "0101" => ohdi <= "0010010";
- WHEN "0110" => ohdi <= "0000010";
- WHEN "0111" => ohdi <= "1111000";
- WHEN "1000" => ohdi <= "0000000";
- WHEN "1001" => ohdi <= "0010000";
- WHEN OTHERS => ohdi <= "1111111";
- END CASE;
- CASE (HDIO(3 downto 0)) IS
- WHEN "0000" => ohdio <= "1000000";
- WHEN "0001" => ohdio <= "1111001";
- WHEN "0010" => ohdio <= "0100100";
- WHEN "0011" => ohdio <= "0110000";
- WHEN "0100" => ohdio <= "0011001";
- WHEN "0101" => ohdio <= "0010010";
- WHEN "0110" => ohdio <= "0000010";
- WHEN "0111" => ohdio <= "1111000";
- WHEN "1000" => ohdio <= "0000000";
- WHEN "1001" => ohdio <= "0010000";
- WHEN OTHERS => ohdio <= "1111111";
- END CASE;
- END IF;
- END PROCESS;
- END beh;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement