MAZZI 1 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба Хотел добиться, чтобы установка ограничения 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 установки на параметризированную компоненту? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба defparam SRL[7].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_2},{FAS, CRC4} }; На Verilog я не добился рабочего варианта, чтобы это можно было использовать, ругается компилятор на defparam. Таким методом и не добьетесь. Что это такое SRL[n] в начале??? Разве так именует экземпляры модулей синтезатор в generate? Он скорее всего что-то добавит к "SRL16E_0" Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба Скажите, зубры VHDL, позволяет он делать INIT установки на параметризированную компоненту? Судя по тому, что в XST Library Guide инициализатор является просто generic параметром - позволяет. SRLC16E_inst : SRLC16E generic map ( INIT => X"0000") port map ( ... Попробуйте написать функцию, которая будет по индексу регистра возвращать его вектор инициализации, и используйте при объявлении компонент. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба Попробовал синопсисом сгенерить, ничего, съел и не подавился. Только согласно "naming rules" у синопсиса пришлось переписать defparam \SRL[7].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_2},{FAS, CRC4} }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба А кстати, Verilog позволяет написать инициализатор в виде функции, чтобы не связываться с naming rules? Ну или на худой конец строку из какого-нибудь двумерного константного массива? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAZZI 1 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба Попробовал синопсисом сгенерить, ничего, съел и не подавился. Только согласно "naming rules" у синопсиса пришлось переписать defparam \SRL[7].SRL16E_0.INIT = { {SA,ALM,NFAS,Ebit_2},{FAS, CRC4} }; согласен, и на любом другом тоже можно добиться, только вот такое не поймет любая система моделирования (ModelSim, Active-HDL, т.д.), а это тоже очень важно А кстати, Verilog позволяет написать инициализатор в виде функции, чтобы не связываться с naming rules? Ну или на худой конец строку из какого-нибудь двумерного константного массива? не очень понял что ты имел ввиду... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба не очень понял что ты имел ввиду... Мы знакомы? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAZZI 1 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба не очень понял что ты имел ввиду... Мы знакомы? Нет, мы не знакомы. Я хотел бы чтобы ты пояснил строчку написанную тобой выше. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба согласен, и на любом другом тоже можно добиться, только вот такое не поймет любая система моделирования (ModelSim, Active-HDL, т.д.), а это тоже очень важно Это почему не поймет? Обязана понять. В крайнем случае через 'ifdef можно разные варианты defparam-ов для разных случаев прописать. Будет время - проверю, у меня есть пара моделяторов (nc-verilog и vcs) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAZZI 1 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба согласен, и на любом другом тоже можно добиться, только вот такое не поймет любая система моделирования (ModelSim, Active-HDL, т.д.), а это тоже очень важно Это почему не поймет? Обязана понять. В крайнем случае через 'ifdef можно разные варианты defparam-ов для разных случаев прописать. Будет время - проверю, у меня есть пара моделяторов (nc-verilog и vcs) на defparam ругается... толи ковычки [] в иерархии не воспринимает, толи ещё какая ерунда... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SM 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба на defparam ругается... толи ковычки [] в иерархии не воспринимает, толи ещё какая ерунда... значит просто другие правила именования генерируемых экземпляров. Узнайте их и корректно напишите defparam-ы Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба Нет, мы не знакомы. Я хотел бы чтобы ты пояснил строчку написанную тобой выше. Ну раз мы не знакомы - считаю трижды повторенное обращение к себе на "ты" как попытку оскорбления. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAZZI 1 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба Нет, мы не знакомы. Я хотел бы чтобы ты пояснил строчку написанную тобой выше. Ну раз мы не знакомы - считаю трижды повторенное обращение к себе на "ты" как попытку оскорбления. Возможно, для Вас это попытка оскорбления, очень жаль... Предлагаю Вам тогда перейти на "ты" и познакомиться, чтобы это Вас не напрягало, Вы согласны? Что Вы можете сказать ближе к теме сообщения? на defparam ругается... толи ковычки [] в иерархии не воспринимает, толи ещё какая ерунда... значит просто другие правила именования генерируемых экземпляров. Узнайте их и корректно напишите defparam-ы ничего не нашел, возможно промахнулся в поиске :) может что-то подобное встретили? Activ-HDL ругнулся на то, что не видит такой модуль, но я его назвал по правилам... ModelSim тоже ругнулся, только уже не помню как, из этого я заключил, что он не понимает таких объявлений при generate, причем так же описывал генерируемые конструкции по стилю Verilog-95 и результат такой же, ругаются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Oldring 0 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба Возможно, для Вас это попытка оскорбления, очень жаль... Предлагаю Вам тогда перейти на "ты" и познакомиться, чтобы это Вас не напрягало, Вы согласны? Что Вы можете сказать ближе к теме сообщения? Извинения принимаю. На "ты" перейдем если станем близкими друзьями. Я имел в виду примерно это: 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; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MAZZI 1 20 декабря, 2006 Опубликовано 20 декабря, 2006 · Жалоба 4Oldring Хороший пример, сейчас сделаю подобное на Verilog Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться