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

 
 
9 страниц V  « < 3 4 5 6 7 > »   
Reply to this topicStart new topic
> ПЛИС 5576ХС1Т применение..., что-то не пойму я про конфигурирование....
seldim
сообщение Oct 29 2014, 05:53
Сообщение #61


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

Группа: Участник
Сообщений: 96
Регистрация: 2-04-12
Из: Саратов
Пользователь №: 71 142



Нужна помощь. Пытаюсь создать однопортовую память на VHDL в квартусе 9 версии для аналога ПЛИС 5576ХС1Т FLEX10K50RI. Изначально проект был под циклон с 2-х портовой памятью и в флексе он не прижился, переделал под однопортовую, Но квартус упорно не хочет использовать память, а компилирует на тригерах. В мегавизарде память создает нормально и использует блоки памяти, а из VHDL никак. Память описывал из квартусовского примера. Кто знает как заставить квартус использовать блоки памяти?
Код
-- Quartus II VHDL Template
-- Single port RAM with single read/write address

library ieee;
use ieee.std_logic_1164.all;

entity single_port_ram is

    port
    (
        clk        : in std_logic;
        addr    : in natural range 0 to 31;
        data    : in std_logic_vector(7 downto 0);
        we        : in std_logic := '1';
        q        : out std_logic_vector(7 downto 0)
    );

end entity;

architecture rtl of single_port_ram is

    -- Build a 2-D array type for the RAM
    subtype word_t is std_logic_vector(7 downto 0);
    type memory_t is array(256 downto 0) of word_t;

    -- Declare the RAM signal.    
    signal ram : memory_t;

    -- Register to hold the address
    signal addr_reg : natural range 0 to 256;

begin

    process(clk, we)
    begin
    if(rising_edge(clk)) then
        if(we = '1') then
            ram(addr) <= data;
        end if;
        addr_reg <= addr;
    end if;
    end process;

    q <= ram(addr_reg);
end rtl;
Go to the top of the page
 
+Quote Post
SM
сообщение Oct 29 2014, 06:12
Сообщение #62


Гуру
******

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



На сколько я помню, во флексах блоки памяти нативно двухпортовые, так что Вам надо иметь два адреса - адрес для порта записи, и адрес для порта чтения. При этом, кстати, адрес для чтения вовсе не обязательно заносить в регистр, так как блоки памяти там асинхронные, а регистры опциональные, и, вроде как, там регистр на адреса один, то есть, или на запись, или на чтение.

и укажите атрибут этой памяти, что она должна быть размещена в EAB (атрибут ramstyle, значение "EAB")

UPD:
Еще, пошукайте по логам на предмет нечто вроде "uninferred due to unsupported read-during-write behavior"

UPD2:
Стоит еще попробовать вместо q <= ram(addr_reg); поставить q <= ram(addr); в связи с нативной асинхронностью блоков.

UPD3:
Вот еще конструкции, которые стоит попробовать, на тему вариаций по read-during-write behavior:

1)
Код
process(clk, we)
begin
if(rising_edge(clk)) then
if(we = '1') then
ram(addr) <= data;
end if;
q <= ram(addr);
end if;
end process;


2)
Код
process(clk, we)
begin
if(rising_edge(clk)) then
if(we = '1') then
ram(addr) <= data;
q <= data;
else
q <= ram(addr);
end if;
end if;
end process;


3) я не знаю, как это на VHDL написать (именно блокирующее "=", а не "<="), сорри, я в основном читатель на VHDL:

always @ (posedge clk) begin
if (we) ram[wr_addr] = d;
q = ram[rd_addr];
end
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение Oct 29 2014, 08:33
Сообщение #63


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



QUOTE (Серый @ Oct 17 2014, 14:05) *
5576XC4T. Подскажите пожалуйста, куда подключать выводы TEST_MODE, RES_MODE, RES.
Схему надо делать сейчас, а закупка чего-либо будет в другом этапе.
В альтеровском аналоге таких входов не увидел.


..это служебные входы, предусмотрите на них подтяжки и к нулю и к единице, на всякий случай и всё.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Maverick
сообщение Oct 29 2014, 08:34
Сообщение #64


я только учусь...
******

Группа: Модераторы
Сообщений: 3 447
Регистрация: 29-01-07
Из: Украина
Пользователь №: 24 839



Цитата(seldim @ Oct 29 2014, 07:53) *
Нужна помощь. Пытаюсь создать однопортовую память на VHDL в квартусе 9 версии для аналога ПЛИС 5576ХС1Т FLEX10K50RI. Изначально проект был под циклон с 2-х портовой памятью и в флексе он не прижился, переделал под однопортовую, Но квартус упорно не хочет использовать память, а компилирует на тригерах. В мегавизарде память создает нормально и использует блоки памяти, а из VHDL никак. Память описывал из квартусовского примера. Кто знает как заставить квартус использовать блоки памяти?
Код
-- Quartus II VHDL Template
-- Single port RAM with single read/write address

library ieee;
use ieee.std_logic_1164.all;

entity single_port_ram is

    port
    (
        clk        : in std_logic;
        addr    : in natural range 0 to 31;
        data    : in std_logic_vector(7 downto 0);
        we        : in std_logic := '1';
        q        : out std_logic_vector(7 downto 0)
    );

end entity;

architecture rtl of single_port_ram is

    -- Build a 2-D array type for the RAM
    subtype word_t is std_logic_vector(7 downto 0);
    type memory_t is array(256 downto 0) of word_t;

    -- Declare the RAM signal.    
    signal ram : memory_t;

    -- Register to hold the address
    signal addr_reg : natural range 0 to 256;

begin

    process(clk, we)
    begin
    if(rising_edge(clk)) then
        if(we = '1') then
            ram(addr) <= data;
        end if;
        addr_reg <= addr;
    end if;
    end process;

    q <= ram(addr_reg);
end rtl;


ниже пример двупортовой памяти (то что было под рукой), там имеются атрибуты (attribute) которые у Вас тоже должны быть. Как раз с помощью этих атрибутов можно задать, где будет размещаться память: блочная память, регистровая логика и т.д.
Код
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
use std.textio.all;

entity memA is
generic
    (
        DATA_WIDTH : natural := 4;
        ADDR_WIDTH : natural := 13
    );

    port
    (
        clk_a    : in std_logic;
        clk_b    : in std_logic;
        addr_a    : in std_logic_vector((ADDR_WIDTH-1) downto 0);
        addr_b    : in std_logic_vector((ADDR_WIDTH-1) downto 0);
        data_a    : in std_logic_vector((DATA_WIDTH-1) downto 0);
        data_b    : in std_logic_vector((DATA_WIDTH-1) downto 0);
        we_a    : in std_logic := '1';
        we_b    : in std_logic := '1';
        q_a        : out std_logic_vector((DATA_WIDTH -1) downto 0);
        q_b        : out std_logic_vector((DATA_WIDTH -1) downto 0)
    );          
          
end memA;

architecture Behavioral of memA is

    -- Build a 2-D array type for the RAM
    subtype word_t is std_logic_vector((DATA_WIDTH-1) downto 0);
    type memory_t is array(2**ADDR_WIDTH-1 downto 0) of word_t;
    
    shared variable ram : memory_t:= (others => (others => '0'));
--     signal ram : memory_t :=
--(
-- to initialize memory
--    );
     signal mem_data : std_logic_vector (14 downto 0);
    
attribute ramstyle : string;
attribute ramstyle of ram : variable is "M9K, no_rw_check";
    
    
begin

    -- Port A
    process(clk_a)
    begin
    if(rising_edge(clk_a)) then
        if(we_a = '1') then
            ram(conv_integer(addr_a)) := data_a;
        end if;
        q_a <= ram(conv_integer(addr_a));
    end if;
    end process;

    -- Port B
    process(clk_b)
    begin
    if(rising_edge(clk_b)) then
        if(we_b = '1') then
            ram(conv_integer(addr_b)) := data_b;
        end if;
        q_b <= ram(conv_integer(addr_b));
    end if;
    end process;        

end Behavioral;


уточните:
- какая у Вас память на 9 килобит или 4 килобит или другая...
- возможно для Вашего ПО эти атрибуты пишутся иначе...
PS Приведенное описание работает в квартусе


--------------------
If it doesn't work in simulation, it won't work on the board.

"Ты живешь в своих поступках, а не в теле. Ты — это твои действия, и нет другого тебя" Антуан де Сент-Экзюпери повесть "Маленький принц"
Go to the top of the page
 
+Quote Post
disel
сообщение Oct 29 2014, 12:25
Сообщение #65


Знающий
****

Группа: Свой
Сообщений: 610
Регистрация: 22-04-05
Пользователь №: 4 410



Это работает в 5576ХС4Т

CODE
library ieee;
use ieee.std_logic_1164.all;

entity analyzer_mem is
generic (
DATA_WIDTH : natural := 8;
ADDR_WIDTH : natural := 6
);
port (
clk : in std_logic;
wr_addr : in natural range 0 to 2**ADDR_WIDTH - 1;
rd_addr : in natural range 0 to 2**ADDR_WIDTH - 1;
data_i : in std_logic_vector((DATA_WIDTH-1) downto 0);
we : in std_logic := '1';
q : out std_logic_vector((DATA_WIDTH -1) downto 0)
);

end analyzer_mem;

architecture rtl of analyzer_mem is

-- Build a 2-D array type for the RAM
subtype word_t is std_logic_vector((DATA_WIDTH-1) downto 0);
type memory_t is array(2**ADDR_WIDTH-1 downto 0) of word_t;

-- Declare the RAM
shared variable ram : memory_t;

begin

process(clk, rd_addr)
begin
if(rising_edge(clk)) then
if(we = '1') then
ram(wr_addr) := data_i;
end if;
end if;
q <= ram(rd_addr);
end process;

end rtl;
Go to the top of the page
 
+Quote Post
Corner
сообщение Nov 6 2014, 17:43
Сообщение #66


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

Группа: Участник
Сообщений: 1 072
Регистрация: 11-12-12
Пользователь №: 74 815



5576 хорошие ПЛИС. Только ГК56 для них не родной, лучше ГК154.
Go to the top of the page
 
+Quote Post
AndreiUS
сообщение Nov 20 2014, 07:55
Сообщение #67


Местный
***

Группа: Свой
Сообщений: 293
Регистрация: 23-12-08
Из: Тверь
Пользователь №: 42 694



А существуют ли отладочные платы для воронежских ПЛИС? Может кто-то уже покупал/интересовался данным вопросом?
Go to the top of the page
 
+Quote Post
Spinorog
сообщение Apr 27 2015, 14:21
Сообщение #68





Группа: Участник
Сообщений: 12
Регистрация: 18-04-14
Пользователь №: 81 436



Цитата(AndreiUS @ Nov 20 2014, 11:55) *
А существуют ли отладочные платы для воронежских ПЛИС? Может кто-то уже покупал/интересовался данным вопросом?


Да, существуют!
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение May 14 2015, 11:39
Сообщение #69


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Здравствуйте все!
Скажите, пожалуйста, надо ли как-то закреплять корпус 5576ХС4Т, помимо пайки выводов? Клеить, например? Корпус большой, а ноги тонкие и, говорят, мягкие.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Spinorog
сообщение May 25 2015, 11:39
Сообщение #70





Группа: Участник
Сообщений: 12
Регистрация: 18-04-14
Пользователь №: 81 436



Цитата(DSIoffe @ May 14 2015, 15:39) *
Здравствуйте все!
Скажите, пожалуйста, надо ли как-то закреплять корпус 5576ХС4Т, помимо пайки выводов? Клеить, например? Корпус большой, а ноги тонкие и, говорят, мягкие.


Советую почитать ТУ на этот предмет.
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение May 25 2015, 11:48
Сообщение #71


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



Спасибо за совет. Мне бы ответ.


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
Lmx2315
сообщение May 25 2015, 11:51
Сообщение #72


отэц
*****

Группа: Свой
Сообщений: 1 729
Регистрация: 18-09-05
Из: Москва
Пользователь №: 8 684



..у нас паяют так, без клея.
Правда серьёзно ничего не трясли, а сами по себе они не отрываются.


--------------------
b4edbc0f854dda469460aa1aa a5ba2bd36cbe9d4bc8f92179f 8f3fec5d9da7f0
SHA-256
Go to the top of the page
 
+Quote Post
Spinorog
сообщение May 26 2015, 11:29
Сообщение #73





Группа: Участник
Сообщений: 12
Регистрация: 18-04-14
Пользователь №: 81 436



Цитата(DSIoffe @ May 25 2015, 15:48) *
Спасибо за совет. Мне бы ответ.

Собственно ответ на ваш вопрос в ТУ. Цитировать не имею к сожалению права.
Go to the top of the page
 
+Quote Post
DSIoffe
сообщение May 26 2015, 11:43
Сообщение #74


Дима
*****

Группа: Свой
Сообщений: 1 683
Регистрация: 15-12-04
Из: Санкт-Петербург
Пользователь №: 1 486



У меня есть ТУ. Я его с Вашей подачи даже перечитал. Может, в личке ткнёте носом? Буду очень признателеню


--------------------
© CОПЫРИГХТ: Дмитрий Иоффе, Советский Союз.
Приглашаю посмотреть: http://muradowa.spb.ru/ и http://www.drtata.narod.ru/index.html
Go to the top of the page
 
+Quote Post
GMVM
сообщение Jul 1 2015, 10:45
Сообщение #75


Участник
*

Группа: Участник
Сообщений: 30
Регистрация: 4-07-10
Пользователь №: 58 276



Здраствуйте! У кого нибудь есть схема отладочного комплекта на 5576хс1т?
Go to the top of the page
 
+Quote Post

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

 


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


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