Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Dual port ram Spartan
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
at90
Делаю контроллер TFT дисплея PD035VX3. Тайминг контроллер написал. Работает отлично.
Вот решил пока для теста использовать внутренню память плиски. плиска xc3s500e.
Сгенерил память двухпортовую.
ENTITY rambmax IS
port (
addra: IN std_logic_VECTOR(18 downto 0);
addrb: IN std_logic_VECTOR(18 downto 0);
clka: IN std_logic;
clkb: IN std_logic;
dina: IN std_logic_VECTOR(0 downto 0);
dinb: IN std_logic_VECTOR(0 downto 0);
douta: OUT std_logic_VECTOR(0 downto 0);
doutb: OUT std_logic_VECTOR(0 downto 0);
ena: IN std_logic;
enb: IN std_logic;
wea: IN std_logic;
web: IN std_logic);
END rambmax;

вот как её прикрутить ,что бы синхронно читать её и плевать данные в tft?

Данные вывожу в TFT так!
process (iCLK_TF)
begin
if rising_edge(iCLK_TF)then
if ycur<480 then
RGB<=iRGB;
end if;
end process;

Сильно не пинайте! Это мой первый проект на FPGA!
CodeWarrior1241
У вас нескольлко задач:
1. Надо создать (instantiate) Вашу blockRam.
2. Надо написать в неё Вашу data с portA.
3. Надо читать с неё data с portB.
4. И, транслировать data вычитаеммое из blockRam в то что Ваша TFT ожидает увидеть.

С четвертым не могу помочь, я не совсем понял Ваш пример, но это и не важно, у Вас интерфайс с TFT уже работает. Instantiate blockRam через coregen duak-port block ram 6.3, оно Вам даст VHDL wrapper который Вы, собственно, и придали в Вашем посте. Если у Вас data принемает TFT display, получается что portB будет только read, а portA будет только write. Тогда Вам надо реализовать circular buffer с числом n позиций. Это показано в атачменте.
at90
Спасибо! С памятью разобрался! Подскажите как можно её инициализировать какими нить значениями. Вроде можно подключить файл. Как это сделать?
CodeWarrior1241
Цитата(at90 @ Jul 1 2007, 14:49) *
Спасибо! С памятью разобрался! Подскажите как можно её инициализировать какими нить значениями. Вроде можно подключить файл. Как это сделать?

Совершенно верно - как раз для этого есть .COE файлы. Примеры находятся в $XILINX/coregen/data - посмотрите на blkmem_v3_256x16.coe, это пример того что нужно. Откройте эту линк в Вашей OS - file:///F:/XilinxISE8/doc/usenglish/help/iseguide/mergedProjects/coregen/coregen.htm#html/cgn_b_overview.htm (у меня стоит в F:/XilinxISE8, введите диск и директорию которая соответствует Вашей конфигурации), там обясняют про .COE файлы.
at90
CodeWarrior1241,cпасибо! Получилось работает!
AVR
Цитата(CodeWarrior1241 @ Jul 1 2007, 23:06) *
Совершенно верно - как раз для этого есть .COE файлы.
А можно ли инициализировать ROM память файлами других форматов, таких как hex, mif, mem?..
CodeWarrior1241
Цитата(AVR @ Jul 7 2007, 16:52) *
А можно ли инициализировать ROM память файлами других форматов, таких как hex, mif, mem?..
Разгавор шел не о ROM, а о SRAM (В данном примере dual-port) которая является instantiated из block RAM которое на самом кристалле (die) ПЛИСа. Блочную память конечно можно использовать как ROM убрав WE в CORE generator. Насколько я знаю, кроме .coe можно использовать .mem - но это глобальная файл для всего проекта которая инициализирует все структуры RAMB4 and RAMB16. Если Вы пользуетесь CORE generator, .coe удобнее, поскольку в ней Вы даете инициализацию только тех ресурсов которые используются конкретно тем ядром которым Вы пользуетесь. На off-chip ресурсы естессно .coe не распространяется.
AVR
Цитата(CodeWarrior1241 @ Jul 8 2007, 01:18) *
Разгавор шел не о ROM, а о SRAM (В данном примере dual-port) которая является instantiated из block RAM которое на самом кристалле (die) ПЛИСа. Блочную память конечно можно использовать как ROM убрав WE в CORE generator. Насколько я знаю, кроме .coe можно использовать .mem - но это глобальная файл для всего проекта которая инициализирует все структуры RAMB4 and RAMB16. Если Вы пользуетесь CORE generator, .coe удобнее, поскольку в ней Вы даете инициализацию только тех ресурсов которые используются конкретно тем ядром которым Вы пользуетесь. На off-chip ресурсы естессно .coe не распространяется.
Спасибо за инфу.
Вот ещё вопрос если можно: создав rom и указав ему .coe я могу отдельно редактировать этот файл, т.е. нет необходимости загружать .coe после каждого изменения?
P.S.
В Altera Quartus всё гораздо удобнее: можно для каждого rom свой файл формата .hex или .mif указать, причем и удобный редактор имеется для обоих форматов...
CodeWarrior1241
Цитата(AVR @ Jul 7 2007, 17:42) *
Спасибо за инфу.
P.S.
В Altera Quartus всё гораздо удобнее: можно для каждого rom свой файл формата .hex или .mif указать, причем и удобный редактор имеется для обоих форматов...
Вроде существует hex2coe utility для похожего для ISE... А расширение .mif ваще незнакомо.

Мы настолько крепко стоим на Xilinx что на altera flow вряд ли перейдем в ближайшее время, хотя было бы интересно посмотреть насколько там у них все удобнее в плане софта.

AVR
Цитата(CodeWarrior1241 @ Jul 8 2007, 01:51) *
Мы настолько крепко стоим на Xilinx что на altera flow вряд ли перейдем в ближайшее время, хотя было бы интересно посмотреть насколько там у них все удобнее в плане софта.

Намного удобнее и интуитивно понятнее, симулятор удобнее, RTL viewer приятнее... А вот ISE жуть: добавил CoreGen'ом ROM, настроил, инициализировал с помощью .coe - Sythesize и Implement проходит успешно, а вот когда я пытаюсь запустить это на симуляторе - "ERROR:HDLParsers:3482 - Could not resolve instantiated unit rom in Verilog module work/test in any library"...
ADD: Разобрался: ISE не добавляло .v файл в список для симуляции smile.gif

Цитата
А расширение .mif ваще незнакомо.
Кстати, CoreGen в ISE его (.mif) создает из .coe и даёт ссылку на него в создаваемом экземпляре wink.gif Отсюда вопрос если можно: создав rom и указав ему .coe я могу отдельно редактировать этот файл, т.е. нет необходимости загружать .coe после каждого изменения?
CodeWarrior1241
Цитата(AVR @ Jul 7 2007, 19:06) *
Отсюда вопрос если можно: создав rom и указав ему .coe я могу отдельно редактировать этот файл, т.е. нет необходимости загружать .coe после каждого изменения?

Прочитал про .mif files... Не могу поверить что мог такое пропустить! Дествительно, при симуляции, не обязательно изменять .coe и потом делать regeneration, можно спокойно изменять .mif и все!!! В behavioral simulation это точно работает, проверил... Столько времени экономит, просто жуть.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.