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

 
 
> использование встроенной памяти ПЛИС
penauch
сообщение Nov 5 2009, 06:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



как использовать встроенную память в ПЛИС? (как объявить в vhdl?)

а то создание большив массивов из std_logic_vector отъедает кучу времени на компиляцию и количество логических вентилей быстро нарастает до единиц тысяч!
Go to the top of the page
 
+Quote Post
3 страниц V   1 2 3 >  
Start new topic
Ответов (1 - 37)
DmitryR
сообщение Nov 5 2009, 07:01
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Надо почитать документацию на то программное обеспечение, которым вы пользуетесь. Там в примерах расписано, как надо кодить распространенные конструкции, чтобы они синтезились предсказуемо.
Go to the top of the page
 
+Quote Post
penauch
сообщение Nov 5 2009, 07:13
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



Цитата(DmitryR @ Nov 5 2009, 10:01) *
Надо почитать документацию на то программное обеспечение, которым вы пользуетесь. Там в примерах расписано, как надо кодить распространенные конструкции, чтобы они синтезились предсказуемо.


тоесть насколько я понял из вашего ответа, что в Vhdl нету такой синтаксической конструкции для работы с памятью?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Nov 5 2009, 08:07
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(penauch @ Nov 5 2009, 11:13) *
тоесть насколько я понял из вашего ответа, что в Vhdl нету такой синтаксической конструкции для работы с памятью?
В VHDL памяти как таковой нет. Скажу Вам по секрету: в нем много чего нет. Вот как именно написать нечто, чтобы синтезатор воспринял это как память, -- это и есть задача разработчика. Таки читайте доку на Ваш синтезатор. Там это написано.

Или воспользуётесь поиском по форуму -- вопрос уже обуждался.
Go to the top of the page
 
+Quote Post
dvladim
сообщение Nov 5 2009, 08:44
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 654
Регистрация: 24-01-07
Из: Воронеж
Пользователь №: 24 737



Цитата(penauch @ Nov 5 2009, 10:27) *
как использовать встроенную память в ПЛИС? (как объявить в vhdl?)

Такие вещи, как правило, не описываются в HDL. В Альтере для этого пользуются Мегавизардом - генерится компонент с нужными характеристиками. В ксайлинксах, наверное, тоже что-то подобное есть.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 5 2009, 08:49
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Мегавизардом - это если платформенно-независимый код не нужен.
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 5 2009, 08:52
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Наиболее правильный подход - сгенерировать блок памяти при помощи Memory Compiler и подключить его в проект как модуль. А вот эти самые Memory Compiler-ы они могут называться по-разному в разном софте. Где-то это мегавизард, где-то еще что-то. Описывать память конструкциями языка есть смысл только в том случае, если синтез этого модуля не планируется, а только моделирование.

Цитата(DmitryR @ Nov 5 2009, 11:49) *
Мегавизардом - это если платформенно-независимый код не нужен.

Как раз с точностью до наоборот - мегавизардом, если платформонезависимый код НУЖЕН. Так как на любой платформе есть свой мемори компилер. Или конструкцией HDL, если четко привязываться к определенному синтезатору и рекомендациям по инферрингу от него.
Go to the top of the page
 
+Quote Post
Builder
сообщение Nov 5 2009, 09:00
Сообщение #8


iBuilder©
****

Группа: Свой
Сообщений: 519
Регистрация: 14-07-04
Из: Минск
Пользователь №: 322



Цитата(SM @ Nov 5 2009, 12:52) *
Как раз с точностью до наоборот - мегавизардом, если платформонезависимый код НУЖЕН. Так как на любой платформе есть свой мемори компилер. Или конструкцией HDL, если четко привязываться к определенному синтезатору и рекомендациям по инферрингу от него.

добавлю. Если компилится на разных платформах, выносим память в отдельный модуль, где по дефайну
вставляется нужная версия для нужной платформы.
Дефайн выводим на верхний уровень, для всего проекта.
Go to the top of the page
 
+Quote Post
o-henry
сообщение Nov 5 2009, 09:03
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 8-03-06
Из: степей Украины
Пользователь №: 15 069



Цитата(dvladim @ Nov 5 2009, 10:44) *
В ксайлинксах, наверное, тоже что-то подобное есть.
В ксайлинксах это называется Core Generator.

Еще в ISE есть волшебная кнопочка в виде лампочки и с названием Language Template.
После нажатия на волшебную кнопочку можно заглянуть в раздел
VHDL->Synthesis Construct->CodingExamples->RAM

Еще есть и документация - но этим путем редко кто идет laughing.gif
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 5 2009, 09:05
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(Builder @ Nov 5 2009, 12:00) *
добавлю. Если компилится на разных платформах, выносим память в отдельный модуль, где по дефайну
вставляется нужная версия для нужной платформы.
Дефайн выводим на верхний уровень, для всего проекта.

Ага. Именно так. Только дефайн я предпочитаю выносить не на верхний уровень (кстати не очень понимаю, как это возможно), а вообще в опции синтезатора.
Go to the top of the page
 
+Quote Post
penauch
сообщение Nov 5 2009, 13:09
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



меня интересует в vhdl, квартус, альтера циклон-2

вот с них пожалста... по конкретнее...

напишите шаблон памяти хотя бы 1k x 8
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 5 2009, 13:21
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(penauch @ Nov 5 2009, 16:09) *
меня интересует в vhdl, квартус, альтера циклон-2

Найдите в меню квартуса мегавизард, в нем сгенерируйте нужную память, он сгенерирует все что надо, и шаблон, как ее подключить в проект, и модуль самой памяти.
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 5 2009, 13:29
Сообщение #13


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(penauch @ Nov 5 2009, 16:09) *
напишите шаблон памяти хотя бы 1k x 8
Прочитайте хотя бы http://www.altera.com/literature/hb/qts/qts_qii51007.pdf

Как что там не поймете - пишите.
Go to the top of the page
 
+Quote Post
penauch
сообщение Nov 5 2009, 13:48
Сообщение #14


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



разобрался, спасибо.

но он по прежнему не использует биты памяти!!!

ниже лог компиляции - желаемое здействовать обведено красным
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 5 2009, 14:26
Сообщение #15


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Значит плохо разобрались.
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 5 2009, 14:34
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(penauch @ Nov 5 2009, 16:48) *
но он по прежнему не использует биты памяти!!!

Отсюда можно сделать лишь два выводы. В мегавизарде Вы ему специально указали делать память из логики, а не из памяти. Либо пытаетесь делать то, чего не надо - описывать память самостоятельно HDL-конструкциями.
Go to the top of the page
 
+Quote Post
AndrewS6
сообщение Nov 5 2009, 14:43
Сообщение #17


Частый гость
**

Группа: Участник
Сообщений: 125
Регистрация: 9-10-05
Из: С.-Петербург
Пользователь №: 9 418



В квартусе есть шаблоны языковых конструкций, а также полные схемы в т.ч. и памяти.
Edit->Insert Template->VHDL->Full Designs->RAMs and ROMs
Go to the top of the page
 
+Quote Post
penauch
сообщение Nov 6 2009, 01:19
Сообщение #18


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



спасибо. проработал два варианта - через wizard и через edit. Через edit описание памяти вклинивается в исходный файл проекта, но по-прежнему память синтезируется из вентилей.

если делать через wizard, то создаётся отдельный файл с описанием памяти где в generic указано "M4K" тоесть из ячеек памяти делать, так?

но подключить файл не удалось - как это сделать?

во вторых - как с этой памятью работать?
память однопортовая с we и clk.

и зачем мне clk? мне нужна асинхронная память - какую там не нашёл sad.gif

мне же нужно работать с памятью как с массивом std_logic_vector - и не хотелось бы всякие стробы и клоки примешивать, тоесть нужно чтоб переменные синтезировались из памяти а не из вентилей.
такое возможно?

если нет, то как пользоваться вышеупомянутой однопортовой памятью?
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 6 2009, 04:21
Сообщение #19


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(penauch @ Nov 5 2009, 19:19) *
и зачем мне clk? мне нужна асинхронная память - какую там не нашёл sad.gif


блин да прочитайте даташит на используемую ФПГА в конце то концов, в альтерах асинхронной блочной памяти после флексов небыло, нет и скорее всего не будет !!!


--------------------
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Nov 6 2009, 08:31
Сообщение #20


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



1. Из меню Edit вставляете template "нужная Вам RAM"
(берёте бубен, набедренную повязку и в ритме тумба-умба > п. 2) smile.gif
2. Настраиваете: главное меню Assignments > пункт Settings > категория Analysis & Syntethesys settings > кнопка More settings > опции (Auto RAM replacement = ON, Auto RAM to logic cell conversion = OFF)
P.S. Это в QII-7.2 так, в других версиях может последовательность и направление вложения опций отличаться, но сути дела не меняет.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 6 2009, 08:46
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(des00 @ Nov 6 2009, 07:21) *
в альтерах асинхронной блочной памяти после флексов небыло, нет и скорее всего не будет !!!

Во первых с ацексов, а во вторых будет - в арриях и стратиксах последних вернули в виде распределенки.
Go to the top of the page
 
+Quote Post
Костян
сообщение Nov 6 2009, 08:47
Сообщение #22


Знающий
****

Группа: Свой
Сообщений: 740
Регистрация: 24-07-06
Из: Minsk
Пользователь №: 19 059



Цитата(penauch @ Nov 5 2009, 23:19) *
 Через edit описание памяти вклинивается в исходный файл проекта, но по-прежнему память синтезируется из вентилей.


чтобы этого не происходило , нужно явно задавать тип памяти через настройки синтезатора (как Вам уже написали выше) либо через атрибуты языка hdl (читайте документацию на используемый синтезатор).
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 6 2009, 08:50
Сообщение #23


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Nov 6 2009, 02:46) *
Во первых с ацексов, а во вторых будет - в арриях и стратиксах последних вернули в виде распределенки.


насчет асексов мог ошибаться и я говорил о блочной памяти, а не о распределенной %)


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 6 2009, 08:56
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(penauch @ Nov 6 2009, 04:19) *
но подключить файл не удалось - как это сделать?

Файл просто добавить в проект, а в тот файл, где используется память. Описание компонента - генерируется визардом, его только включить не забыть. Ну и экземпляр - через memory_inst: memory_name PORT MAP ( .... );

Цитата(penauch @ Nov 6 2009, 04:19) *
Через edit описание памяти вклинивается в исходный файл проекта, но по-прежнему память синтезируется из вентилей.

И будет из вентилей, пока хотите асинхронную. Так как, как уже сказали, асинхронного режима у M4K нет.

Цитата(des00 @ Nov 6 2009, 11:50) *
о блочной памяти, а не о распределенной %)


Так они распределенку сделали в виде блочной - один блок = 1 MLAB = 640 бит = 64x10 | 32x20
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 6 2009, 10:29
Сообщение #25


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Nov 6 2009, 02:56) *
Так они распределенку сделали в виде блочной - один блок = 1 MLAB = 640 бит = 64x10 | 32x20


я бы не стал так однозначно утверждать. Назвать можно все что угодно и как угодно, вот из даташита на стратикс 4
Цитата
The LAB of Stratix IV has a new derivative called Memory LAB (MLAB), which adds look-up table (LUT)-based SRAM capability to the LAB as shown in Figure 2–2.
....
You can use MLAB ALM as a regular LAB ALM or configure it as a dual-port SRAM, as shown

будет тоже самое если назвать SLICEM у хилых каким нить RAMD и заявить что это блочная память с асинхронным чтением, только маленькая. Хотя на деле будут те же яйца вид сбоку %)


--------------------
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 6 2009, 10:45
Сообщение #26


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Цитата(des00 @ Nov 6 2009, 13:29) *
я бы не стал так однозначно утверждать. Назвать можно все что угодно и как угодно, вот из даташита на стратикс 4

Так одно дело было бы, если бы отдельно взятый ALM можно было бы переключить в режим памяти 64х1 или 32х2, так нет - только блок целиком. И название - MLAB - буква B означает Block. И заметьте, не я это придумал wink.gif
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 6 2009, 11:01
Сообщение #27


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(SM @ Nov 6 2009, 04:45) *
Так одно дело было бы, если бы отдельно взятый ALM можно было бы переключить в режим памяти 64х1 или 32х2, так нет - только блок целиком. И название - MLAB - буква B означает Block. И заметьте, не я это придумал wink.gif


прекрасно понимаю что вы тут не причем %) ну не сделали альтеровцы адресный генератор на каждый ALM, а сделали общий на LAB. Но самой сути это не меняет, память эта асинхронная по той причине что на LUT е основана, который и является памятью. ИМХО LUT ресурс более распределенный чем блочный, полагаю на этом можно спор о терминах окончить %)


--------------------
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 6 2009, 11:11
Сообщение #28


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Можно я еще скажу? У этого MLAB всего два входа byte enable, поэтому если вы делаете память 32x20 на MLAB, то byte enable получается на 10 бит. А мне вот надо было довольно много памяти сделать с byte enable по 4 бита - и половина блока пропадает впустую, ее уже как логику тоже не использовать. Короче это безобразие, а не память.
Go to the top of the page
 
+Quote Post
des00
сообщение Nov 6 2009, 11:20
Сообщение #29


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(DmitryR @ Nov 6 2009, 05:11) *
Можно я еще скажу? У этого MLAB всего два входа byte enable, поэтому если вы делаете память 32x20 на MLAB, то byte enable получается на 10 бит. А мне вот надо было довольно много памяти сделать с byte enable по 4 бита - и половина блока пропадает впустую, ее уже как логику тоже не использовать. Короче это безобразие, а не память.


А RMW цикл не получилось использовать ? асинхронное чтение тут как раз рулит smile.gif


--------------------
Go to the top of the page
 
+Quote Post
o_khavin
сообщение Nov 8 2009, 12:45
Сообщение #30


Местный
***

Группа: Участник
Сообщений: 230
Регистрация: 29-08-09
Пользователь №: 52 094



Цитата
А RMW цикл не получилось использовать ? асинхронное чтение тут как раз рулит

это Xilinx рулит... rolleyes.gif
Цитата
А мне вот надо было довольно много памяти сделать с byte enable по 4 бита

а какой глубины нужна память? может на рассыпухе проще будет?

Сообщение отредактировал o_khavin - Nov 8 2009, 12:48
Go to the top of the page
 
+Quote Post
penauch
сообщение Nov 9 2009, 02:20
Сообщение #31


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



c помощью визарда создал такой файл mem.vhd:

Код
LIBRARY ieee;
USE ieee.std_logic_1164.all;

LIBRARY altera_mf;
USE altera_mf.all;

ENTITY mem IS
    PORT
    (
        clock        : IN STD_LOGIC;
        data        : IN STD_LOGIC_VECTOR (14 DOWNTO 0);
        rdaddress        : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
        wraddress        : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
        wren        : IN STD_LOGIC  := '1';
        q        : OUT STD_LOGIC_VECTOR (14 DOWNTO 0)
    );
END mem;


ARCHITECTURE SYN OF mem IS

    SIGNAL sub_wire0    : STD_LOGIC_VECTOR (14 DOWNTO 0);



    COMPONENT altsyncram
    GENERIC (
        address_reg_b        : STRING;
        clock_enable_input_a        : STRING;
        clock_enable_input_b        : STRING;
        clock_enable_output_a        : STRING;
        clock_enable_output_b        : STRING;
        intended_device_family        : STRING;
        lpm_type        : STRING;
        numwords_a        : NATURAL;
        numwords_b        : NATURAL;
        operation_mode        : STRING;
        outdata_aclr_b        : STRING;
        outdata_reg_b        : STRING;
        power_up_uninitialized        : STRING;
        ram_block_type        : STRING;
        read_during_write_mode_mixed_ports        : STRING;
        widthad_a        : NATURAL;
        widthad_b        : NATURAL;
        width_a        : NATURAL;
        width_b        : NATURAL;
        width_byteena_a        : NATURAL
    );
    PORT (
            wren_a    : IN STD_LOGIC;
            clock0    : IN STD_LOGIC;
            address_a    : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
            address_b    : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
            q_b    : OUT STD_LOGIC_VECTOR (14 DOWNTO 0);
            data_a    : IN STD_LOGIC_VECTOR (14 DOWNTO 0)
    );
    END COMPONENT;

BEGIN
    q    <= sub_wire0(14 DOWNTO 0);

    altsyncram_component : altsyncram
    GENERIC MAP (
        address_reg_b => "CLOCK0",
        clock_enable_input_a => "BYPASS",
        clock_enable_input_b => "BYPASS",
        clock_enable_output_a => "BYPASS",
        clock_enable_output_b => "BYPASS",
        intended_device_family => "Cyclone II",
        lpm_type => "altsyncram",
        numwords_a => 256,
        numwords_b => 256,
        operation_mode => "DUAL_PORT",
        outdata_aclr_b => "NONE",
        outdata_reg_b => "CLOCK0",
        power_up_uninitialized => "FALSE",
        ram_block_type => "M4K",
        read_during_write_mode_mixed_ports => "DONT_CARE",
        widthad_a => 8,
        widthad_b => 8,
        width_a => 15,
        width_b => 15,
        width_byteena_a => 1
    )
    PORT MAP (
        wren_a => wren,
        clock0 => clock,
        address_a => wraddress,
        address_b => rdaddress,
        data_a => data,
        q_b => sub_wire0
    );



END SYN;


и ещё mem_inst.vhd:

Код
mem_inst : mem PORT MAP (
        clock     => clock_sig,
        data     => data_sig,
        rdaddress     => rdaddress_sig,
        wraddress     => wraddress_sig,
        wren     => wren_sig,
        q     => q_sig
    );


как теперь этим пользоваться?
читать/записать...

и как включить в проект?
Go to the top of the page
 
+Quote Post
Ledmaster
сообщение Nov 9 2009, 04:49
Сообщение #32


Частый гость
**

Группа: Свой
Сообщений: 142
Регистрация: 18-02-08
Из: Челябинск
Пользователь №: 35 141



Цитата(penauch @ Nov 9 2009, 07:20) *
как теперь этим пользоваться?
читать/записать...
и как включить в проект?


Может я сейчас глупость скажу, но всегда ли оправдано использование VHDL?
В графическом режиме таких вопросов не возникает.
Прикрепленное изображение
Go to the top of the page
 
+Quote Post
penauch
сообщение Nov 9 2009, 12:00
Сообщение #33


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



подцепил файл сгенеренный мегавизардом к проекту - стал компилироваться вместе с остальными файлами.

вопрос - как теперь в тексте программы использовать эту память?
Go to the top of the page
 
+Quote Post
andrew_b
сообщение Nov 9 2009, 12:52
Сообщение #34


Профессионал
*****

Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757



Цитата(penauch @ Nov 9 2009, 16:00) *
вопрос - как теперь в тексте программы использовать эту память?
Ищите в книжке, как в VHDL используются компоненты (ключевое слово -- component instantiation).
Go to the top of the page
 
+Quote Post
SM
сообщение Nov 9 2009, 13:22
Сообщение #35


Гуру
******

Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881



Вот в файле mem_inst.vhd самый что ни на есть конкретный пример, как использовать эту память.
Go to the top of the page
 
+Quote Post
penauch
сообщение Nov 9 2009, 13:47
Сообщение #36


Частый гость
**

Группа: Участник
Сообщений: 78
Регистрация: 12-10-09
Пользователь №: 52 902



я наконец-то хочу услышать ответ по этой памяти.

можно ли работу с ней сделать настолько же удобной как с массивами std_logic_vector ?

или прийдется стробировать и клочить вручную?
Go to the top of the page
 
+Quote Post
DmitryR
сообщение Nov 9 2009, 14:48
Сообщение #37


Профессионал
*****

Группа: Свой
Сообщений: 1 535
Регистрация: 20-02-05
Из: Siegen
Пользователь №: 2 770



Цитата(penauch @ Nov 9 2009, 16:47) *
я наконец-то хочу услышать ответ по этой памяти.
Вы это, не школьный учитель, часом?

Цитата(penauch @ Nov 9 2009, 16:47) *
можно ли работу с ней сделать настолько же удобной как с массивами std_logic_vector ?
Двадвцать раз уже кажется вам объяснили: нет, нет и нет. Никакое железо не поддерживает всех конструкций языков высокого уровня, и искусство программирования на HDL заключается именно в знании аппаратуры и умением написать на HDL конструкции, которые в кокретном железе могут быть реализованы.
Go to the top of the page
 
+Quote Post
EvgenyNik
сообщение Nov 9 2009, 18:08
Сообщение #38


Знающий
****

Группа: Свой
Сообщений: 597
Регистрация: 24-05-06
Из: г. Чебоксары
Пользователь №: 17 402



penauch, Вы вероятно программист, в смысле - программируете для МК, PC и т.п...
Вполне понятно, что хочется иметь аналогию того, как в программе для МК ведётся обращение к регистрам или ячейке памяти на низком уровне - примерно одинаково, или на высоком уровне - можно даже и не знать - что задействует для хранения переменной компилятор.
Но упускается важный момент - в случае с МК вся архитектура и растактовка сделана до Вас и на ещё БОЛЕЕ НИЗКОМ уровне. А ПЛИС это и есть конструктор того самого низкого железного уровня. Так что, описание ведётся не столько алгоритма, сколько архитектуры, которая позволяет этот алгоритм реализовать. В этом плане HDL-описание итак довольно высоко поднимает разработчика относительно gate-уровня.
Кроме того, организация сигнальных путей и законов управления. В случае с std_vector_logic на него выделяются отдельные физические пути и Вы всегда можете "обратиться" к нему. С памятью, всё-таки, дело обстоит посложнее именно физически (например: первым тактом ваша схема защёлкивает у себя адрес, вторым тактом этот адрес захватывается в ДША ОЗУ и выдаются данные, третьим тактом Вы эти данные захватываете в регистр своей схемы). А голом наборе вентилей никто за Вас времянки очерёдности и эти клоки формировать не будет хотя бы потому, что их просто нет, кроме тех, что Вы сами и завели на кристалл и которыми сами полностью и управляете - куда подвести, а куда нет, где по какому фронту защёлкнуть и т.д.
Но в общем на ваш вопрос можно ответить с некоторой степенью утвердительно - работу с некоторыми узлами можно облегчить, создав специальные автоматы (драйверы, контроллеры, как хотите) и вести обращение через них.


--------------------
Почему разработчики систем повышенной надёжности плохо справляются с простыми проектами? :)
Go to the top of the page
 
+Quote Post

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

 


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


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