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

 
 
3 страниц V  < 1 2 3  
Reply to this topicStart new topic
> использование встроенной памяти ПЛИС
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 Текстовая версия Сейчас: 30th July 2025 - 07:42
Рейтинг@Mail.ru


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