реклама на сайте
подробности

 
 
> ПЗУ как дешифратор, Как лаконично описать модуль ROM?
Мур
сообщение Sep 7 2017, 19:31
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 815
Регистрация: 7-06-06
Из: Харьков
Пользователь №: 17 847



Есть задача расщепить адресное пространство на 3 одинаковых модуля, чтобы внутреннее содержимое можно было видеть без пробелов. У меня есть решение, но оно имеет 3 слоя логики.
Подумалось, что можно сделать быстрее по быстродействию при помощи ПЗУ. Однако нарвался на сообщение "Multiple declarations of unsigned included via multiple use clauses;" help.gif
Цитата
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use ieee.numeric_std.all;
use ieee.std_logic_arith.all;

entity CS_ROM is
Port ( ADR_INP : in STD_LOGIC_VECTOR (5 downto 0);
CS_INP : in STD_LOGIC;
ADR_OUT : out STD_LOGIC_VECTOR (4 downto 0);
CS_OUT : out STD_LOGIC_VECTOR (2 downto 0));
end CS_ROM;

architecture Behavioral of CS_ROM is
type ram_type is array (63 downto 0) of std_logic_vector (7 downto 0);
signal RAM : ram_type;
-- signal bus_b: std_logic_vector(7 downto 0);


begin
mem: for i in 1 to 63 generate
RAM <= conv_std_logic_vector(conv_integer(i/3),5) & conv_std_logic_vector(conv_integer(i rem 3),3);
end generate mem;
process (ADR_INP, CS_INP)
begin
ADR_OUT <= RAM(to_integer(unsigned(ADR_INP)))(7 downto 3) when CS_INP = '1' else
"00000";
CS_OUT <= RAM(to_integer(unsigned(ADR_INP)))(2 downto 0) when CS_INP = '1' else
"111";

-- bus_b <= RAM(to_integer(unsigned(ADR_INP))) when CS_INP = '1' else
-- "00000111";
-- ADR_OUT <= bus_b(7 downto 3);
-- CS_OUT <= bus_b(2 downto 0);

end process;
end Behavioral;


Как обойти преграду? Спасибо за любые наводки! tort.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 00:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01272 секунд с 7
ELECTRONIX ©2004-2016