Advertisement
Pinkel

Untitled

Apr 8th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.59 KB | None | 0 0
  1. LIBRARY IEEE;
  2. USE IEEE.std_logic_1164.all;
  3. USE IEEE.numeric_std.all;
  4.  
  5. ENTITY lab3 IS
  6. PORT (
  7. A:in std_logic_vector (15 downto 0);
  8. Smar,Smbr: bit;
  9. clk:in std_logic;
  10. DO:in std_logic_vector (15 downto 0);
  11. DI:out std_logic_vector (15 downto 0);
  12. WR, RD :inout bit;
  13. ADO:out std_logic_vector (15 downto 0);
  14. DIO:inout std_logic_vector (15 downto 0);
  15. ohdo:out std_logic_vector (6 downto 0);
  16. ohdi:out std_logic_vector (6 downto 0);
  17. ohdio: out std_logic_vector (6 downto 0)
  18. );
  19. END lab3;
  20.  
  21. ARCHITECTURE beh OF lab3 IS
  22. signal MAR, MBR1, MBR2 : std_logic_vector (15 downto 0);
  23. signal HADO, HDI, HDIO: std_logic_vector (15 downto 0);
  24. BEGIN
  25.  
  26. PROCESS (clk)
  27.  
  28. BEGIN
  29. IF (clk'event and clk = '0') THEN
  30. IF (Smar = '1') THEN
  31. MAR <= A;
  32. ADO <= MAR;
  33. HADO <= MAR;
  34. --HADO <= ADO;
  35.  
  36. END IF;
  37. IF (Smbr = '1') THEN
  38. MBR1 <= DO;
  39. MBR2 <= MBR1;
  40. DI <= MBR2;
  41. DIO <= MBR1;
  42. HDIO <= MBR1;
  43. END IF;
  44. IF (WR = '0') THEN
  45. DIO <= "ZZZZZZZZZZZZZZZZ";
  46. ELSIF (WR = '1') THEN
  47. MBR1 <= DIO;
  48. MBR2 <= MBR1;
  49. DI <= MBR2;
  50. END IF;
  51. IF (RD = '1') THEN
  52. DIO <= MBR1;
  53. MBR2 <= MBR1;
  54. DI <= MBR2;
  55. HDI <= MBR2;
  56. END IF;
  57. CASE (HADO( 3 downto 0)) IS
  58. WHEN "0000" => ohdo <= "1000000";
  59. WHEN "0001" => ohdo <= "1111001";
  60. WHEN "0010" => ohdo <= "0100100";
  61. WHEN "0011" => ohdo <= "0110000";
  62. WHEN "0100" => ohdo <= "0011001";
  63. WHEN "0101" => ohdo <= "0010010";
  64. WHEN "0110" => ohdo <= "0000010";
  65. WHEN "0111" => ohdo <= "1111000";
  66. WHEN "1000" => ohdo <= "0000000";
  67. WHEN "1001" => ohdo <= "0010000";
  68. WHEN OTHERS => ohdo <= "1111111";
  69. END CASE;
  70. CASE (HDI(3 downto 0)) IS
  71. WHEN "0000" => ohdi <= "1000000";
  72. WHEN "0001" => ohdi <= "1111001";
  73. WHEN "0010" => ohdi <= "0100100";
  74. WHEN "0011" => ohdi <= "0110000";
  75. WHEN "0100" => ohdi <= "0011001";
  76. WHEN "0101" => ohdi <= "0010010";
  77. WHEN "0110" => ohdi <= "0000010";
  78. WHEN "0111" => ohdi <= "1111000";
  79. WHEN "1000" => ohdi <= "0000000";
  80. WHEN "1001" => ohdi <= "0010000";
  81. WHEN OTHERS => ohdi <= "1111111";
  82. END CASE;
  83. CASE (HDIO(3 downto 0)) IS
  84. WHEN "0000" => ohdio <= "1000000";
  85. WHEN "0001" => ohdio <= "1111001";
  86. WHEN "0010" => ohdio <= "0100100";
  87. WHEN "0011" => ohdio <= "0110000";
  88. WHEN "0100" => ohdio <= "0011001";
  89. WHEN "0101" => ohdio <= "0010010";
  90. WHEN "0110" => ohdio <= "0000010";
  91. WHEN "0111" => ohdio <= "1111000";
  92. WHEN "1000" => ohdio <= "0000000";
  93. WHEN "1001" => ohdio <= "0010000";
  94. WHEN OTHERS => ohdio <= "1111111";
  95. END CASE;
  96. END IF;
  97. END PROCESS;
  98.  
  99. END beh;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement