Перейти к содержанию
    

Возможности Verilog / VHDL

Хотел добиться, чтобы установка ограничения INIT действовала на параметризованную сгенирированную константу, необходимо было добиться постоянного, не подгружаемого кода

в линии:

                                /* это описанные константы */
defparam SRL[7].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_2},{FAS, CRC4} };
defparam SRL[6].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_1},{FAS, CRC4} };
defparam SRL[5].SRL16E_0.INIT = { {SA,ALM,NFAS,1'b1},{FAS, CRC4} };  
defparam SRL[4].SRL16E_0.INIT = { {SA,ALM,NFAS,1'b1},{FAS, CRC4} };  
defparam SRL[3].SRL16E_0.INIT = { {SA,ALM,NFAS,1'b0},{FAS, CRC4} };  
defparam SRL[2].SRL16E_0.INIT = { {SA,ALM,NFAS,1'b1},{FAS, CRC4} };  
defparam SRL[1].SRL16E_0.INIT = { {SA,ALM,NFAS,1'b0},{FAS, CRC4} };  
defparam SRL[0].SRL16E_0.INIT = { {SA,ALM,NFAS,1'b0},{FAS, CRC4} };  

genvar i;
wire [(NUMB_SRL/*-1*/):0] DOUT_SRL;

assign DOUT_SRL[NUMB_SRL] = DOUT_SRL[0];
assign o_DOUT = DOUT_SRL[0];

generate for (i = 0; i < NUMB_SRL; i = i+1)begin:SRL
    SRL16E 
        SRL16E_0(
    .Q (DOUT_SRL[(NUMB_SRL-1): 0]), // SRL data output
    .A0 (1'b0  ), // Select[0] input
    .A1 (1'b1  ), // Select[1] input
    .A2 (1'b1  ), // Select[2] input
    .A3 (1'b1  ), // Select[3] input
    .CE (i_CLK_EN ), // Clock enable input
    .CLK(i_GCLK  ), // Clock input
    .D (DOUT_SRL[(NUMB_SRL): 1]) // SRL data input
    );
   end
endgenerate

 

На Verilog я не добился рабочего варианта, чтобы это можно было использовать,

ругается компилятор на defparam.

 

Скажите, зубры VHDL, позволяет он делать INIT установки на параметризированную компоненту?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

defparam SRL[7].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_2},{FAS, CRC4} };

 

На Verilog я не добился рабочего варианта, чтобы это можно было использовать,

ругается компилятор на defparam.

 

Таким методом и не добьетесь. Что это такое SRL[n] в начале??? Разве так именует экземпляры модулей синтезатор в generate? Он скорее всего что-то добавит к "SRL16E_0"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Скажите, зубры VHDL, позволяет он делать INIT установки на параметризированную компоненту?

 

Судя по тому, что в XST Library Guide инициализатор является просто generic параметром - позволяет.

SRLC16E_inst : SRLC16E
generic map (
INIT => X"0000")
port map (
...

 

Попробуйте написать функцию, которая будет по индексу регистра возвращать его вектор инициализации, и используйте при объявлении компонент.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал синопсисом сгенерить, ничего, съел и не подавился. Только согласно "naming rules" у синопсиса пришлось переписать

 

defparam \SRL[7].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_2},{FAS, CRC4} };

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А кстати, Verilog позволяет написать инициализатор в виде функции, чтобы не связываться с naming rules? Ну или на худой конец строку из какого-нибудь двумерного константного массива?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробовал синопсисом сгенерить, ничего, съел и не подавился. Только согласно "naming rules" у синопсиса пришлось переписать

 

defparam \SRL[7].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_2},{FAS, CRC4} };

 

согласен, и на любом другом тоже можно добиться, только вот такое не поймет любая система моделирования (ModelSim, Active-HDL, т.д.), а это тоже очень важно

 

А кстати, Verilog позволяет написать инициализатор в виде функции, чтобы не связываться с naming rules? Ну или на худой конец строку из какого-нибудь двумерного константного массива?

 

не очень понял что ты имел ввиду...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

не очень понял что ты имел ввиду...

Мы знакомы?

 

Нет, мы не знакомы.

Я хотел бы чтобы ты пояснил строчку написанную тобой выше.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

согласен, и на любом другом тоже можно добиться, только вот такое не поймет любая система моделирования (ModelSim, Active-HDL, т.д.), а это тоже очень важно

 

Это почему не поймет? Обязана понять. В крайнем случае через 'ifdef можно разные варианты defparam-ов для разных случаев прописать. Будет время - проверю, у меня есть пара моделяторов (nc-verilog и vcs)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

согласен, и на любом другом тоже можно добиться, только вот такое не поймет любая система моделирования (ModelSim, Active-HDL, т.д.), а это тоже очень важно

 

Это почему не поймет? Обязана понять. В крайнем случае через 'ifdef можно разные варианты defparam-ов для разных случаев прописать. Будет время - проверю, у меня есть пара моделяторов (nc-verilog и vcs)

 

на defparam ругается... толи ковычки [] в иерархии не воспринимает, толи ещё какая ерунда...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

на defparam ругается... толи ковычки [] в иерархии не воспринимает, толи ещё какая ерунда...

 

значит просто другие правила именования генерируемых экземпляров. Узнайте их и корректно напишите defparam-ы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, мы не знакомы.

Я хотел бы чтобы ты пояснил строчку написанную тобой выше.

 

Ну раз мы не знакомы - считаю трижды повторенное обращение к себе на "ты" как попытку оскорбления.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, мы не знакомы.

Я хотел бы чтобы ты пояснил строчку написанную тобой выше.

 

Ну раз мы не знакомы - считаю трижды повторенное обращение к себе на "ты" как попытку оскорбления.

 

Возможно, для Вас это попытка оскорбления, очень жаль... Предлагаю Вам тогда перейти на "ты" и познакомиться, чтобы это Вас не напрягало, Вы согласны?

 

Что Вы можете сказать ближе к теме сообщения?

 

на defparam ругается... толи ковычки [] в иерархии не воспринимает, толи ещё какая ерунда...

 

значит просто другие правила именования генерируемых экземпляров. Узнайте их и корректно напишите defparam-ы

 

ничего не нашел, возможно промахнулся в поиске :) может что-то подобное встретили? Activ-HDL ругнулся на то, что не видит такой модуль, но я его назвал по правилам...

ModelSim тоже ругнулся, только уже не помню как, из этого я заключил, что он не понимает таких объявлений при generate, причем так же описывал генерируемые конструкции по стилю Verilog-95 и результат такой же, ругаются.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно, для Вас это попытка оскорбления, очень жаль... Предлагаю Вам тогда перейти на "ты" и познакомиться, чтобы это Вас не напрягало, Вы согласны?

 

Что Вы можете сказать ближе к теме сообщения?

 

Извинения принимаю. На "ты" перейдем если станем близкими друзьями.

 

Я имел в виду примерно это:

 

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

Library UNISIM;
use UNISIM.vcomponents.all;

entity Shifter is
    Port(
        Clock : in std_logic;
        DOut : out std_logic
    );
end Shifter;

architecture Structure of Shifter is
    constant RegsCount : positive := 5;
    constant RegsInit : bit_vector( 16 * RegsCount - 1 downto 0 )
        := ( X"ABCD_4567_7652_9875_1143" );

    signal regsConnector : std_logic_vector( 0 to RegsCount );
begin

regsConnector( 0 ) <= regsConnector( RegsCount );
DOut <= regsConnector( RegsCount );

shiftReg: for i in 1 to RegsCount generate
    begin
        SRLC16E_inst : SRLC16E
            generic map (
                INIT => RegsInit( 16 * i - 1 downto 16 * i - 16 )
            ) port map (
                Q => regsConnector( i ),
                A0 => '1', -- Select[0] input
                A1 => '1', -- Select[1] input
                A2 => '1', -- Select[2] input
                A3 => '1', -- Select[3] input
                CE => '1', -- Clock enable input
                CLK => Clock, -- Clock input
                D => regsConnector( i - 1 )
            );
    end generate;

end Structure;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...