SolarGuy8 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Нужно написать программу (на Verilog)или нарисовать схему (в Quartus), которая записывает значение в память RAM, а затем переносит это значение в память ROM и выводит его. Очень нужна ваша помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба а затем переносит это значение в память ROM и выводит его. Где должна находиться "программа", где RAM и где ROM? А что такое по Вашему ROM и как туда "перенести"? Да, и кто кого "выводит"? PS И вот это - "нужно"... Кому? Не мне точно... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SolarGuy8 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Где должна находиться "программа", где RAM и где ROM? А что такое по Вашему ROM и как туда "перенести"? Да, и кто кого "выводит"? PS И вот это - "нужно"... Кому? Не мне точно... Программа пишется в среде Quartus 2 на языке Verilog. ROM - это память, нужно сделать так, чтобы мы подавали значение в память RAM и это значение через блоки памяти переносилось в ROM. Мы в файле Verilog WafeForm выводит нашу полученную симуляцию. Вот и возник вопрос, как туда перенести? Где должна находиться "программа", где RAM и где ROM? А что такое по Вашему ROM и как туда "перенести"? Да, и кто кого "выводит"? PS И вот это - "нужно"... Кому? Не мне точно... Один из вариантов, но здесь суммирование... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Программа пишется в среде Quartus 2 на языке Verilog. ROM - это память, нужно сделать так, чтобы мы подавали значение в память RAM и это значение через блоки памяти переносилось в ROM. Мы в файле Verilog WafeForm выводит нашу полученную симуляцию. Вот и возник вопрос, как туда перенести? Один из вариантов, но здесь суммирование... Внимательно читайте буквы! Как расшифровывается термин ROM? Как туда можно "перенести"? "Программа пишется в среде.." И куда она потом девается? Откуда берутся " мы подавали значение"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SolarGuy8 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Внимательно читайте буквы! Как расшифровывается термин ROM? Как туда можно "перенести"? "Программа пишется в среде.." И куда она потом девается? Откуда берутся " мы подавали значение"? ROM - Read only memory. Просто пишем код или составляем схему и проводим ее симуляцию Эта программа - моя лабораторная работа. Значение подаем через файл verilog waveform. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба ROM - Read only memory. Просто пишем код или составляем схему и проводим ее симуляцию Эта программа - моя лабораторная работа. Значение подаем через файл verilog waveform. Так я и хочу услышать, как Вы в "Read only memory" на этапе симуляции что-то хотите "туда перенести"? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SolarGuy8 0 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Так я и хочу услышать, как Вы в "Read only memory" на этапе симуляции что-то хотите "туда перенести"? Может неправильно что-то понял, но задание звучало так: из RAM в ROM перенести одно значение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 октября, 2017 Опубликовано 10 октября, 2017 · Жалоба Может неправильно что-то понял, но задание звучало так: из RAM в ROM перенести одно значение. Тогда надо сделать два шага. 1. Подойти к преподавателю и потребовать объяснений еще раз. А лучше письменно. 2. Любая лабораторная может быть выполнена только на том уровне знаний, которые уже получил студент. А потому в задании четко должно быть прописано, что "задано" и какими средствами это надо выполнить. Так что составьте для себя "задание", в котором четко обозначьте что и как "задано". А пока Ваша задача выглядит так: "жарьте ребята, масло подвезут..." После этого нарисуйте блок-схему того устройства, которое Вы хотите реализовать и обсудите это с преподавателем. И вот только после этого имеет смысл браться за верилог и квартус... А что касается нас, то может так оказаться, что наша помощь не будет Вам полезна. Я бы сделал FSM и чтение-запись данных из файла, но возможно что Вы и не знаете что это такое. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
predator 0 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба чтобы не плодить темы, попрошу помощи здесь: имею Cyclon5, в нём генеренную двухпортовую ОЗУ на одном модуле m10k. один порт для записи: тактовая частота 60 МГц, пишется константа (докатился при урезании проекта), адрес по счетчику, записи единичные. т.е. идея такая: клоки тикают стационарно, изредка приходит сигнал WR (по переднему фронту клока взводится на один такт), заставляет записать константу в ОЗУ, и тот-же WR перщелкивает счетчик адреса (для следующей записи). второй порт для чтения, тактовая частота 44,25 МГц, читается по счетчику в цикле всё время (вот совсем всегда). суть проблемы - примерно 20% записей не проходит, счетчик перещелкивает, а запись не проходит, суть не в соревновании счетчик-запись, входной адрес я формировал отдельно, да и бывает по несколько пропущенных записей подряд. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
x736C 0 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба Стоит поделиться кодом, чтобы можно было вам помочь. Так трудно сказать с уверенностью. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Golikov 0 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба А какой режим 2 портовой памяти, как решается конфликт одновременного чтения-записи в один адрес? Как проверяете, симулятор или железо? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба А какой режим 2 портовой памяти, как решается конфликт одновременного чтения-записи в один адрес? Для памяти должно использовать атрибуты, чтобы компилятор знал, что делать при одновременном обращении в одну и ту же ячейку: Читать вперед Писать вперед Безразлично Правильно ли выполнено CDC между двумя сторонами памяти. И Память д.б. двухклоковая... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alexadmin 0 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба Для памяти должно использовать атрибуты, чтобы компилятор знал, что делать при одновременном обращении в одну и ту же ячейку: Читать вперед Писать вперед Безразлично Правильно ли выполнено CDC между двумя сторонами памяти. И Память д.б. двухклоковая... Если память двухклоковая, то обращение из разных портов к одному адресу приводит к неопределенному результату. Вроде как запись гарантируется, а чтение - нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
predator 0 13 октября, 2017 Опубликовано 13 октября, 2017 · Жалоба Стоит поделиться кодом, чтобы можно было вам помочь. Так трудно сказать с уверенностью. library IEEE; use IEEE.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity mem_buf_kadr is port ( -- in side DIN : in std_logic_vector (15 downto 0); WR : in std_logic; clk_in : in std_logic; adr_str_in : std_logic_vector (8 downto 0); --- out side clk_out : in std_logic; DOUT : out std_logic_vector (15 downto 0); adr_str_out : in std_logic_vector (8 downto 0); adr_col_out : in std_logic_vector (8 downto 0); -- debug deb_dat : out std_logic_vector (7 downto 0) ); end mem_buf_kadr; architecture mem_buf_kadr_a of mem_buf_kadr is -- signal signal ct_pix: std_logic_vector(8 downto 0):=(others=>'0'); signal adr_col_in: std_logic_vector(8 downto 0):=(others=>'0'); signal wrz,wr0,wr1,wr2: std_logic; signal DOUT0,DOUT1,DOUT2: std_logic_vector(15 downto 0):=(others=>'0'); component block_ozu IS PORT ( data : IN STD_LOGIC_VECTOR (15 DOWNTO 0); rdaddress : IN STD_LOGIC_VECTOR (8 DOWNTO 0); rdclock : IN STD_LOGIC; wraddress : IN STD_LOGIC_VECTOR (8 DOWNTO 0); wrclock : IN STD_LOGIC := '1'; wren : IN STD_LOGIC := '0'; q : OUT STD_LOGIC_VECTOR (15 DOWNTO 0) ); END component; begin u0:block_ozu port map ( rdaddress (8 downto 0) =>adr_col_out, rdclock =>clk_out, q =>DOUT0, data => "0010000000000000",--DIN, wraddress(8 downto 0) =>adr_col_in, wrclock =>clk_out, wren =>WR ); --u1:ram_kadr --port map ( -- data =>DIN, -- rdaddress (8 downto 0)=>adr_col_out, -- rdaddress (15 downto 9)=>adr_str_out(6 downto 0), -- rdclock =>clk_out, -- -- wraddress (8 downto 0)=>adr_col_in, -- wraddress (15 downto 9)=>adr_str_in(6 downto 0), -- wrclock =>clk_out, -- wren =>WR1, -- q =>DOUT1 -- ); --u2:ram_kadr --port map ( -- data =>DIN, -- rdaddress (8 downto 0)=>adr_col_out, -- rdaddress (15 downto 9)=>adr_str_out(6 downto 0), -- rdclock =>clk_out, -- -- wraddress (8 downto 0)=>adr_col_in, -- wraddress (15 downto 9)=>adr_str_in(6 downto 0), -- wrclock =>clk_out, -- wren =>WR2, -- q =>DOUT2 -- ); process (clk_in) begin if (clk_in'event and clk_in='1') then if wr='1' then if ct_pix="101111111" then ct_pix<=(others=>'0'); else -- ct_pix="101111111" ct_pix<=ct_pix+1; end if; -- ct_pix="101111111" end if; --wr=1 --wrz<=wr; end if; --(clk'event and clk='1') end process; adr_col_in<=ct_pix; --wr0<=wr and (not adr_str_in(8)) and (not adr_str_in(7)); --wr1<=wr and (not adr_str_in(8)) and (adr_str_in(7)); --wr2<=wr and (adr_str_in(8)) and (not adr_str_in(7)); process (clk_out) begin if (clk_out'event and clk_out='1') then if (adr_str_out(8 downto 7)="00") then DOUT<=DOUT0; elsif (adr_str_out(8 downto 7)="01") then DOUT<="0000000000000000";--DOUT1; else DOUT<="0000000000000000";--DOUT2; end if; -- adr_str_out end if; --clk end process; deb_dat<=adr_col_in(8 downto 1); end mem_buf_kadr_a; проверяю в железе, в симуляторе всё красиво. память двухклоковая, если верить датащиту Read first и write first вообще не существует, может быть параметр на тему что читать old data или Don’t Care, да и то такую настройку у генератора я не нашел... P.S. первый раз с квартусом развлекаюсь, у меня 15.1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
predator 0 13 октября, 2017 Опубликовано 13 октября, 2017 (изменено) · Жалоба перегенерил макрос с rden, вообще отключаю чтение на время прогрузки - не полегчало... updt: я тормоз вот это меня подвело и сутки в напряжении держало: wrclock =>clk_out, Изменено 13 октября, 2017 пользователем predator Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться