|
Использование блоков ОЗУ в ACEX 1K |
|
|
|
Apr 30 2008, 11:32
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 15-07-07
Пользователь №: 29 127

|
Подскажите пожалуйста как в ACEX 1K использовать встроеные блоки ОЗУ?
Сообщение отредактировал НаноСБИС - Apr 30 2008, 11:35
|
|
|
|
|
Apr 30 2008, 12:41
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
вроде так пашет в Квартусе Код module ramacex(we,oe,addr,data); input we; input oe; input [8:0] addr; inout [7:0] data;
lpm_ram_io0 b2v_inst(.we(we), .outenab(oe),.address(addr),.dio(data));
endmodule правда ещё надо Квартусовские файлики с билиотечными "выписками" добваить. Сгенерить визардом память и перегнать в ХДЛ.
|
|
|
|
|
Apr 30 2008, 13:37
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 15-07-07
Пользователь №: 29 127

|
В моем проекте достаточно много переменных, возможно ли их переместиь в блоки ОЗУ, чтобы они не занимали логические элементы кристала?
Сообщение отредактировал НаноСБИС - Apr 30 2008, 13:40
|
|
|
|
|
Apr 30 2008, 13:48
|
Частый гость
 
Группа: Участник
Сообщений: 127
Регистрация: 18-10-06
Пользователь №: 21 418

|
Ещё можно написать чисто ХДЛ-ное описание синхронной памяти на 512 байт - квартус его в блоки ацекса отмапит. Правда, может и не отмапить, если заранее будет известно, что, например, из всего блока используются только байт 8. Что-то вроде вот такого: Код module mem512( rdaddr, out, wraddr, in, we, clk );
input clk; input [8:0] rdaddr, wraddr; input we; input [7:0] in; output [7:0] out; reg [7:0] out;
reg [7:0] mem [0:511];
always @(posedge clk) begin out <= mem[rdaddr]; if(we) mem[wraddr] <= in; end
endmodule
|
|
|
|
|
Apr 30 2008, 14:02
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 15-07-07
Пользователь №: 29 127

|
Как насчет переменных в ОЗУ?
|
|
|
|
|
Apr 30 2008, 20:26
|
Местный
  
Группа: Свой
Сообщений: 443
Регистрация: 22-07-06
Из: Украина, г. Харьков
Пользователь №: 19 006

|
Переменные в ОЗУ расположить конечно же можно, однако надо понимать, что из ОЗУ одновременно можно считать только одно слово, тоесть можно туда сложить только такие переменные, которые не используются одновременно, а только по очереди. Ну и просто запхнуть их в память, поставив какую-нибудь галочку в синтезаторе, не удасться, придется описывать это самому. Читабельность кода при этом конечно же пострадает, но думаю по сравнению с необходимостью последовательного доступа к переменным, это мааленькая неприятность  .
|
|
|
|
|
May 1 2008, 11:30
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 15-07-07
Пользователь №: 29 127

|
Спасибо за советы, что то попробывал, получилось.
|
|
|
|
|
May 5 2008, 06:20
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 15-07-07
Пользователь №: 29 127

|
Делаю дипломный проект по теме: "обнаружение сигналов на фоне помех". Сначало спроектировал, но достаточно много логических элементов занимает. Для хранения информации использовал переменные. А в документации на ACEX1K нашел, что есть встроеные блоки ОЗУ и решил их задействоввать.
В ACEXе есть встроеные блоки памяти их также можно увидеть на Floorplan Editor.
|
|
|
|
|
May 5 2008, 18:48
|

Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 25-08-05
Пользователь №: 7 971

|
Цитата(mse @ May 4 2008, 14:44)  Семён Семёныч!!! Это в положительном или отрицательном смысле? Ну, вот специально пдфку скачал. Для точности. Есть там такие EABы, да. Их можно конфигурить как комбинаторику и как рам. Потому как архитектура такая. Лут - значит лут. Но вот выделенного блока рама, как например в циклонах, нету. Рам компилится или в еаб, или в ячейки вообще...
|
|
|
|
|
May 6 2008, 06:42
|
Участник

Группа: Новичок
Сообщений: 30
Регистрация: 15-07-07
Пользователь №: 29 127

|
Можно посмотреть на сайте Altera там дана таблица семейств ПЛИСов. В одной из граф этой таблицы даны объемы встроеного ОЗУ.
|
|
|
|
|
May 6 2008, 06:44
|
Знающий
   
Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693

|
Цитата(Kostolomus @ May 5 2008, 22:48)  ...Но вот выделенного блока рама, как например в циклонах, нету. Рам компилится или в еаб, или в ячейки вообще... Семён Семёныч - 2. ;О) "Up to 49,152 RAM bits (4,096 bits per EAB, all of which can be used without reducing logic capacity)" Уж не знаю, щщитать ли ЕАБ выделенным блоком РАМ или нет, но чОрным по белому написано. Верю. "The EAB is a flexible block of RAM, with registers on the input and output ports, that is used to implement common gate array megafunctions. Because it is large and flexible, the EAB is suitable for functions such as multipliers, vector scalars, and error correction circuits. These functions can be combined in applications such as digital filters and microcontrollers." А что, в Цыклоне, или ещё где, РАМу нельзя пользовать как ЛУТ? Только и разницы, что там РАМа асинхронная, а там - совсем наоборот.
|
|
|
|
|
May 7 2008, 16:02
|

Частый гость
 
Группа: Свой
Сообщений: 80
Регистрация: 25-08-05
Пользователь №: 7 971

|
Цитата(mse @ May 6 2008, 10:44)  Семён Семёныч - 2. ;О) От семенсеменыча и слышу. А именно: Цитата "The EAB is a flexible block of RAM, with registers on the input and output ports, that is used to implement common gate array megafunctions. То есть как хошь ее выворачивай. implement common gate array megafunctions - значит выполнять общие функции массива логики. Буквально. То, что она может работать как рам - счастливое совпадение. Цитата А что, в Цыклоне, или ещё где, РАМу нельзя пользовать как ЛУТ? Только и разницы, что там РАМа асинхронная, а там - совсем наоборот. Есть разница! В циклонах рама заточена под использование именно как рама. Двухпортовая, и блоками по 4к. Синхронная принципиально, асинхронную из нее не сделаешь. И еще ее много. И кроме этой рамы есть свои луты. Которые тоже могут быть рамой (надо же...). Ладно, предлагаю кончить флудилище, а то подеремся еще...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|