|
Как согласовать два клоковых региона в ПЛИС |
|
|
|
Mar 10 2014, 09:14
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 23-10-12
Пользователь №: 74 054

|
Цитата(olegras @ Mar 10 2014, 08:35)  Так-так, вот отсюда поподробнее пожалуйста. Было то-то, решили сделать так-то, сделали то-то, стало то-то... Хочется понять связь между топиком (проблема в клоковых регионах) и изменением логики (с 1.8 на 3.3). изменили логику начались танцы с бубном с клоками. Был отработанный проект на логике 1.8, но тут нужно его было переделать и логика уже 3.3. Я сам пока не могу понять почему началась это котовасия)
--------------------
|
|
|
|
|
Mar 11 2014, 01:51
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075

|
Цитата(Alexsandr000 @ Mar 10 2014, 14:14)  изменили логику начались танцы с бубном с клоками. Был отработанный проект на логике 1.8, но тут нужно его было переделать и логика уже 3.3. Я сам пока не могу понять почему началась это котовасия) К сожалению Вы продолжаете думать что здеь живут телепаты. А зря... Вы можете выложить структуру реализованного клокового региона? То есть: что входит в ПЛИС, что подается на PLL, что с него снимается, чем тактируются FIFO и т.д... Желательно графически. А лучше еще и такой же регион со старой логикой.
|
|
|
|
|
Mar 11 2014, 07:23
|

Местный
  
Группа: Свой
Сообщений: 397
Регистрация: 21-11-12
Из: Россия г. Санкт-Петербург
Пользователь №: 74 498

|
Цитата(Alexsandr000 @ Mar 10 2014, 13:14)  изменили логику начались танцы с бубном с клоками. Был отработанный проект на логике 1.8, но тут нужно его было переделать и логика уже 3.3. Я сам пока не могу понять почему началась это котовасия) Уважаемый Alexsandr000! ВЫ ХОТЬ ЧИТАЕТЕ, ЧТО ТУТ ПИШУТ?????? Прочтите все посты. И прокомментируйте, что пробовали, а что не пробовали. У Вас в проекте не используются глобальные трассы под такты.....чего вы хотите?! Глюков будет много и самых разных. Нарисуйте блок схему вашего устройства с акцентом на такты. Откуда и куда они идут и где формируются. Или танцуйте с бубном дальше
--------------------
Победа - это когда N раз упал и N+1 раз встал.
|
|
|
|
|
Mar 12 2014, 03:03
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 23-10-12
Пользователь №: 74 054

|
Код library IEEE; use IEEE.STD_LOGIC_1164.ALL; library UNISIM; use UNISIM.VComponents.all; ---------------------------------------------------------------------------------------------------- entity MODULE_MAIN is Port ( G_CLK_IN : in STD_LOGIC; G_TX_DATA_OUT : out STD_LOGIC_VECTOR (3 downto 0); G_TX_EN_OUT : out STD_LOGIC; G_TX_ER_OUT : out STD_LOGIC; G_TX_CLK_IN : in STD_LOGIC; G_RES_ETH_OUT : out STD_LOGIC; G_MD_CLK_OUT : out STD_LOGIC; G_MD_IO_OUT : out STD_LOGIC; data_p : in STD_LOGIC_VECTOR (15 downto 0); -- data_n : in STD_LOGIC_VECTOR (15 downto 0); -- G_CLK_ADC_P_IN : in STD_LOGIC; -- G_CLK_ADC_N_IN : in STD_LOGIC; -- G_TX_OUT : out STD_LOGIC :='1'; G_TEST_TX_OUT : out STD_LOGIC_VECTOR (2 downto 0) ); end MODULE_MAIN; --------------------------------------------------------------------------------- architecture Behavioral of MODULE_MAIN is ------------------------------------------------------------------------ component MODULE_CLOCK_MANAGER port( CLK_IN1 : in std_logic; CLK_OUT1 : out std_logic; CLK_OUT2 : out std_logic; LOCKED : out std_logic ); end component; -------------------------------------------------------------------------- COMPONENT MD_CLOCK Port ( clk : in STD_LOGIC:='0'; mdclk : out STD_LOGIC:='0'; mdio : out STD_LOGIC:='0' ); END COMPONENT; -------------------------------------------------------------------------------------- COMPONENT MODULE_SYNCHRONIZATION Port ( CLK_IN : IN STD_LOGIC; PWR_EN : IN std_logic; EN_OUT : out STD_LOGIC; PWR_OUT : out STD_LOGIC; TEST : out STD_LOGIC_VECTOR(2 downto 0) ); END COMPONENT; -------------------------------------------------------------------------------------- COMPONENT MODULE_DATA_OUT Port ( CLK : in STD_LOGIC; TX_CLK : in STD_LOGIC; DATA_IN_RE : in STD_LOGIC_VECTOR (47 downto 0); DATA_IN_IM : in STD_LOGIC_VECTOR (47 downto 0); DATA_IN_EN : in STD_LOGIC; gtx_data : out STD_LOGIC_VECTOR (3 downto 0); gtx_en : out STD_LOGIC; gtx_er : out STD_LOGIC ); end COMPONENT; ------------------------------------------------------------------------ signal clk_125MHz : std_logic := '0'; signal data_from_adc : STD_LOGIC_VECTOR(47 downto 0):=(others=>'0'); signal clk_from_adc : STD_LOGIC; signal enable : STD_LOGIC:= '0'; signal adc_ready : STD_LOGIC:= '0'; signal ENPWR : STD_LOGIC:= '0'; -------- MM RE -------------------------------------------------------------------- begin -------------------------------------------------------------------------- MODULE_CLOCK_MGR: MODULE_CLOCK_MANAGER port map(G_CLK_IN,clk_125MHz,clk_10MHz,G_RES_ETH_OUT); MODULE_MD_CLK: MD_CLOCK PORT MAP(clk_125MHz, G_MD_CLK_OUT, G_MD_IO_OUT); --------------------------------------------------------------------------- ibufds_clk_inst : IBUFGDS generic map (diff_term => true,IOSTANDARD => "LVDS_33") port map (I => G_CLK_ADC_P_IN,IB => G_CLK_ADC_N_IN,O => clk_from_adc); --------------------input signal------------------------------------------- pins: for N in 0 to 15 generate begin ibufds_inst : IBUFDS generic map (DIFF_TERM => true,IOSTANDARD => "LVDS_33") port map (I => data_p(N),IB => data_n(N),O => data_from_adc(N)); end generate; --------------------------------------------------------------------------- MSNC: MODULE_SYNCHRONIZATION PORT MAP(clk_125MHz,ENPWR,enable,G_TX_OUT,G_TEST_TX_OUT); -- ----------------------------------------------------------------------------------------- MDO:MODULE_DATA_OUT Port map(clk_125MHz,G_TX_CLK_IN, data_from_adc,enable, G_TX_DATA_OUT,G_TX_EN_OUT,G_TX_ER_OUT ); ----------------------------------------------------------------------------- end Behavioral; и UCF Код NET "G_CLK_IN" TNM_NET = "G_CLK_IN"; TIMESPEC TS_G_CLK_IN = PERIOD "G_CLK_IN" 8 ns; #################################################################### NET "G_CLK_IN" LOC = AA12 |IOSTANDARD = LVCMOS33;#LVCMOS18; ################# ADC CLOCK #################################################### NET "G_CLK_ADC_P_IN" TNM_NET = "G_CLK_ADC_P_IN"; TIMESPEC TS_G_CLK_ADC_P_IN = PERIOD "G_CLK_ADC_P_IN" 8 ns HIGH 50 %; NET "G_CLK_ADC_P_IN" LOC = B12 |IOSTANDARD = LVDS_33; ################# ADC DATA ######################################### NET "data_p[0]" LOC = E16 | IOSTANDARD = LVDS_33; NET "data_n[0]" LOC = D17 | IOSTANDARD = LVDS_33; NET "data_p[1]" LOC = D15 | IOSTANDARD = LVDS_33; NET "data_p[2]" LOC = C17 | IOSTANDARD = LVDS_33; NET "data_p[3]" LOC = B16 | IOSTANDARD = LVDS_33; NET "data_p[4]" LOC = C15 | IOSTANDARD = LVDS_33; NET "data_p[5]" LOC = B14 | IOSTANDARD = LVDS_33; NET "data_p[6]" LOC = C13 | IOSTANDARD = LVDS_33; NET "data_p[7]" LOC = D14 | IOSTANDARD = LVDS_33; NET "data_p[8]" LOC = C5 | IOSTANDARD = LVDS_33; NET "data_p[9]" LOC = B6 | IOSTANDARD = LVDS_33; NET "data_p[10]" LOC = C7 | IOSTANDARD = LVDS_33; NET "data_p[11]" LOC = B8 | IOSTANDARD = LVDS_33; NET "data_p[12]" LOC = C9 | IOSTANDARD = LVDS_33; NET "data_p[13]" LOC = B10 | IOSTANDARD = LVDS_33; NET "data_p[14]" LOC = D11 | IOSTANDARD = LVDS_33; NET "data_p[15]" LOC = B18 | IOSTANDARD = LVDS_33; NET "G_TX_OUT" LOC = AB4 | IOSTANDARD = LVCMOS33;#LVCMOS18; ####################### ETHERNET ################################################ NET "G_MD_CLK_OUT" LOC = AA2 | IOSTANDARD = LVCMOS33;#LVCMOS18; NET "G_MD_IO_OUT" LOC = AB3 | IOSTANDARD = LVCMOS33;#LVCMOS18; NET "G_RES_ETH_OUT" LOC = T15 | IOSTANDARD = LVCMOS33;#LVCMOS18; ####################### RX ###################################### #NET "G_RX_CLK_IN" LOC = Y11 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[0]" LOC = Y3 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[1]" LOC = W8 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[2]" LOC = W4 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[3]" LOC = U9 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[4]" LOC = V7 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[5]" LOC = V5 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[6]" LOC = W9 | IOSTANDARD = LVCMOS18; #NET "G_RX_DATA_IN[7]" LOC = U6 | IOSTANDARD = LVCMOS18; #NET "G_RX_EN_IN" LOC = Y4 | IOSTANDARD = LVCMOS18; #NET "G_RX_ER_IN" LOC = Y8 | IOSTANDARD = LVCMOS18; ###################### TX ################################ NET G_TX_CLK_IN LOC = W12 | IOSTANDARD = LVCMOS33;#LVCMOS18; #R11; - NET G_TX_EN_OUT LOC = AB16 | IOSTANDARD = LVCMOS33;#LVCMOS18; NET G_TX_ER_OUT LOC = AB18 | IOSTANDARD = LVCMOS33;#LVCMOS18; NET G_TX_DATA_OUT[0] LOC = AA18 | IOSTANDARD = LVCMOS33;#LVCMOS18; NET G_TX_DATA_OUT[1] LOC = AB14 | IOSTANDARD = LVCMOS33;#LVCMOS18; NET G_TX_DATA_OUT[2] LOC = AA16 | IOSTANDARD = LVCMOS33;#LVCMOS18; NET G_TX_DATA_OUT[3] LOC = W14 | IOSTANDARD = LVCMOS33;#LVCMOS18; #NET G_TX_DATA_OUT[4] LOC = T16 | IOSTANDARD = LVCMOS18; #NET G_TX_DATA_OUT[5] LOC = Y14 | IOSTANDARD = LVCMOS18; #NET G_TX_DATA_OUT[6] LOC = V15 | IOSTANDARD = LVCMOS18; #NET G_TX_DATA_OUT[7] LOC = AA14 | IOSTANDARD = LVCMOS18; ####################### LEDS ##################################################### NET "G_TEST_TX_OUT[0]" LOC = D6 | SLEW = FAST | IOSTANDARD = LVCMOS33;#LVCMOS18; NET "G_TEST_TX_OUT[1]" LOC = C6 | SLEW = FAST | IOSTANDARD = LVCMOS33;#LVCMOS18; NET "G_TEST_TX_OUT[2]" LOC = D7 | SLEW = FAST | IOSTANDARD = LVCMOS33;#LVCMOS18;
--------------------
|
|
|
|
|
Mar 12 2014, 06:13
|
Частый гость
 
Группа: Участник
Сообщений: 113
Регистрация: 12-03-07
Пользователь №: 26 075

|
Цитата(Alexsandr000 @ Mar 12 2014, 10:14)  Добавил BUFG вроде все заработало) Спасибо за подсказки! Поздравляю. Синтезатор больше не ругается? Например на то что в Вашем коде не определено: 1. Что подается на входы DATA_IN_IM модуля MDO 2. Куда подается клоковый сигнал clk_from_adc с выхода ibufds_clk_inst 3. куда соединены входы data_n (в UCF)
|
|
|
|
|
Mar 12 2014, 07:03
|
Частый гость
 
Группа: Участник
Сообщений: 97
Регистрация: 23-10-12
Пользователь №: 74 054

|
Цитата(olegras @ Mar 12 2014, 10:13)  Поздравляю. Синтезатор больше не ругается? Например на то что в Вашем коде не определено: 1. Что подается на входы DATA_IN_IM модуля MDO 2. Куда подается клоковый сигнал clk_from_adc с выхода ibufds_clk_inst 3. куда соединены входы data_n (в UCF) Проект большой я сократил, что бы не путать вас. В целом с АЦП поступают данные и часы, через фифо часы согласовываются и весь проект далее работает на внитриплисовой частоте, после фильтрации сигнала и вычисления БПФ, полученные данные поступают на Ethernet(100) и передаются на комп. Первоначально проект работал на ура, но вдруг потребовалось изменить логику с 1.8 на 3.3 и тут возникла эта ошибка. Но по выше указанным рекомендациям, я в клокменеджере пропустил входной клок и клоки АЦП через BUFG все заработал. Как-то так) Прошу прощения за некоторое недопонимание с моей стороны, но писал в перерывах между работой
--------------------
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|