acvarif 0 3 июля, 2017 Опубликовано 3 июля, 2017 (изменено) · Жалоба Имеется ROM entity moddata is generic ( DATA_WIDTH : natural; ADDR_WIDTH : natural ); port ( rclk : in std_logic; raddr : in std_logic_vector ((ADDR_WIDTH - 1) downto 0); q : out std_logic_vector((DATA_WIDTH -1) downto 0) ); end moddata; architecture behavioural of moddata is subtype word_model is std_logic_vector((DATA_WIDTH-1) downto 0); type memory_mod is array(2**ADDR_WIDTH-1 downto 0) of word_model; signal rom_mod : memory_mod; attribute ram_init_file : string; attribute ramstyle of rom_mod : signal is "M9K, no_rw_check"; attribute ram_init_file of rom_mod : signal is "modcossin256.mif"; begin process(rclk) begin if(rising_edge(rclk)) then q <= rom_mod(conv_integer(raddr)); end if; end process; end behavioural; В данной ROM в качестве инициализатора используется файл modcossin256.mif Но в основном проекте, в одном из режимов работы, требуется смена файла инициализации на другой (с другим содержимым). Скажите пожалуйста как это можно сделать динамически - подменить файл в процессе работы, например в зависимости от состояния какого-то однобитного флага? Или придется сделать два разных компонента ROM с разными .mif и в top-level по флагу включать в работу нужный компонент? Изменено 3 июля, 2017 пользователем Acvarif Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Swup 0 3 июля, 2017 Опубликовано 3 июля, 2017 · Жалоба Предложу другой вариант. Положите обе ваши таблицы в одну ROM по очереди, и в читающем устройстве меняйте базовый адрес для чтения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
acvarif 0 3 июля, 2017 Опубликовано 3 июля, 2017 · Жалоба Предложу другой вариант. Положите обе ваши таблицы в одну ROM по очереди, и в читающем устройстве меняйте базовый адрес для чтения. Точно. Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться