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

 
 
 
Reply to this topicStart new topic
> Spartan3A multiple clocks, не могу растрасировать...Помогите плз...
artix
сообщение Oct 27 2010, 08:55
Сообщение #1


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

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Доброго времени суток,уважаемые товарищи форумчане!!!! Возникла проблема: не могу растрасировать проект, в нем 3 входных тактирования которые заводятся на блок синтеза (на базе ДЦМ), там ничего хитрого не происходит: 2 из 3-х частот деляться на 2 и идут на фифо, одна из этих 2-х дополнительно вращается на 180 градусов....короче одним словом при трессировке ИСЕ вываливает:
CODE

ERROR:Place:1138 - Automatic clock placement failed. Please attempt to analyze the global clocking required for this
design and either lock the clock placement or area locate the logic driven by the clocks so that the clocks may be
placed in such a way that all logic driven by them may be routed. The main restriction on clock placement is that
only one clock output signal for any competing Global / Side pair of clocks may enter any region. For further
information see the "Quadrant Clock Routing" section in the Spartan3a Family Datasheet.

The competing Global / Side clock buffers for this device are as follows:
BUFGMUX_X2Y1 : BUFGMUX_X0Y2
BUFGMUX_X2Y0 : BUFGMUX_X0Y3
BUFGMUX_X1Y1 : BUFGMUX_X0Y4
BUFGMUX_X1Y0 : BUFGMUX_X0Y5
BUFGMUX_X2Y11 : BUFGMUX_X0Y6
BUFGMUX_X2Y10 : BUFGMUX_X0Y7
BUFGMUX_X1Y11 : BUFGMUX_X0Y8
BUFGMUX_X1Y10 : BUFGMUX_X0Y9
BUFGMUX_X2Y1 : BUFGMUX_X3Y2
BUFGMUX_X2Y0 : BUFGMUX_X3Y3
BUFGMUX_X1Y1 : BUFGMUX_X3Y4
BUFGMUX_X1Y0 : BUFGMUX_X3Y5
BUFGMUX_X2Y11 : BUFGMUX_X3Y6
BUFGMUX_X2Y10 : BUFGMUX_X3Y7
BUFGMUX_X1Y11 : BUFGMUX_X3Y8
BUFGMUX_X1Y10 : BUFGMUX_X3Y9
Phase 5.30 Global Clock Region Assignment (Checksum:551afbee) REAL time: 27 secs

Подскажите как мне это победить!!! все частоты важны 2 из них подаются с другой микросхемы в качестве тактирующих... третья - из генератора, тактирование хост-интерфейса...
Go to the top of the page
 
+Quote Post
Andrew Su
сообщение Oct 27 2010, 09:03
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647



Добрый день.
Какой конкретно кристалл и через какие пины заведены тактовые сигналы?
Go to the top of the page
 
+Quote Post
artix
сообщение Oct 27 2010, 09:11
Сообщение #3


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

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Цитата(Andrew Su @ Oct 27 2010, 12:03) *
Добрый день.
Какой конкретно кристалл и через какие пины заведены тактовые сигналы?

Кристал xc3s700a-4fg484
CODE

# PlanAhead Generated physical constraints
NET "MF100_MHz" CLOCK_DEDICATED_ROUTE = FALSE;
NET "rx_rd_clk" CLOCK_DEDICATED_ROUTE = FALSE;
NET "rx_clk" CLOCK_DEDICATED_ROUTE = FALSE;
NET "tx_clk" CLOCK_DEDICATED_ROUTE = FALSE;
NET "MDC" LOC = D10;
NET "MDO" LOC = E10;
NET "MF100_MHz" LOC = E12;

# PlanAhead Generated physical constraints

NET "reset" LOC = T14;

# PlanAhead Generated physical constraints

NET "nRST" LOC = D15;

# PlanAhead Generated physical constraints

NET "MRXD[0]" LOC = G7;
NET "MRXD[1]" LOC = G8;
NET "MRXD[2]" LOC = G9;
NET "MRXD[3]" LOC = H9;
NET "MTXD[0]" LOC = F8;
NET "MTXD[1]" LOC = E7;
NET "MTXD[2]" LOC = E6;
NET "MTXD[3]" LOC = F7;
NET "rx_clk" LOC = C12;
NET "tx_clk" LOC = E11;

# PlanAhead Generated physical constraints

NET "MCRS" LOC = H12;
NET "MTXEN" LOC = D8;
NET "MTXER" LOC = B2;
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Oct 27 2010, 09:15
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Нехватает глобальных буферов. Ясное дело.
Я бы посмотрел сколько их есть в данном кристалле и где, сверху, снизу.
Еще проверил бы, что буферы не используются понапрасну: сигнал с входной ножки идет сразу на ближайшую DCM и идет не через буфер, если конечно на одну ножку один DCM.
Подумал бы про использование локальных инверторов вместо вращения фазы DCM-ом на 180 градусов.
И еще подумал бы про использование для тактирования локальные ресурсы, если речь идет о небольших блоках рядом с тактовым входом.
После всего проверил бы еще раз правильно ли заведены feedback-и.
Go to the top of the page
 
+Quote Post
Andrew Su
сообщение Oct 27 2010, 09:27
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 301
Регистрация: 18-09-07
Из: Украина
Пользователь №: 30 647



Согласен с Shtirlits, явно в схеме(тексте) нет BUFG и можно убрать строки
CLOCK_DEDICATED_ROUTE = FALSE, их используют, когда приходится заводить клоки через пины, не предназначенные для этого.
Go to the top of the page
 
+Quote Post
artix
сообщение Oct 27 2010, 09:33
Сообщение #6


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

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Цитата(Andrew Su @ Oct 27 2010, 12:27) *
CLOCK_DEDICATED_ROUTE = FALSE, их используют, когда приходится заводить клоки через пины, не предназначенные для этого.

Дак ИСЕ и потребовала laughing.gif сделать именно так....
Самое интересное - то что я добавил в проект два счетчика: один выдержует паузу в 500 us и запускает на счет второй... в результате проект перестал собираться...тактирование основной частотой 100 МГц выходящей из одного из портов ДЦМ с IBUFG_OUT (кажись)...
Go to the top of the page
 
+Quote Post
andrewkrot
сообщение Oct 27 2010, 09:39
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 306
Регистрация: 11-11-04
Из: Москва
Пользователь №: 1 106



Все-равно не понятно, куда у Вас заведены эти клоки. Возможно, в проекте они еще где-то используются, однако, насколько я помню, в этих кристаллах DCM работает не только от тактовых выходов, а и от обычных IO. Попробуйте обконстрейнить тактовые ноги чем-то вроде CLOCK_DEDICATED_ROUTE = FALSE
Go to the top of the page
 
+Quote Post
artix
сообщение Oct 27 2010, 11:51
Сообщение #8


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

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



Я тут файл верхнего уровня привел, так вот ежели в tx_fifo - we зацепить на s_enable (сигнал строба записи фифо от измерителя задержки 500 мкс), то проект не разводится, иначе если we на внешний порт то все собираеться...
кто чего может подсказать, заранее благодарен!!!

CODE

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use work.types.all;
library UNISIM;
use UNISIM.VComponents.all;

entity MAC_full is

generic (
--####################### -- MAC REGISTERS DECLARATION -- ###############################################

MAC1 : std_logic_vector(15 downto 0):=x"0001"; --MAC Configuration register #1
MAC2 : std_logic_vector(15 downto 0):=x"00b5"; --MAC Configuration register #2
IPGT : std_logic_vector(15 downto 0):=x"0015"; --Back-to-back Inter-packet-Gap register
IPGR : std_logic_vector(15 downto 0):=x"0c12"; --Non-Back-to-back Inter-packet-Gap register
CLRT : std_logic_vector(15 downto 0):=x"370f"; --Collision Window/Retry register
MAXF : std_logic_vector(15 downto 0):=x"0600"; --Maximum Frame register 1536 bytes
SUPP : std_logic_vector(15 downto 0):=x"1100"; --PHY support register
MCFG : std_logic_vector(15 downto 0):=x"0010"; --MII Mgmt Configuration
SA0 : std_logic_vector(15 downto 0):=MAC_addres (47 downto 32); --Station Address
SA1 : std_logic_vector(15 downto 0):=MAC_addres (31 downto 16); --Station Address
SA2 : std_logic_vector(15 downto 0):=MAC_addres (15 downto 0); --Station Address
--#################################################-- ADDITIONAL STATES OF SIGNALS -- ###################
DIVREF_cond : std_logic:='0'; --Divide reference clock
THDF_cond : std_logic:='0'; --Transmit half-duplex flow control
TPCF_cond : std_logic:='0'; --Transmit PAUSE control frame
PPADEN_cond : std_logic:='0'; --Per-packet pad enable
PCRCEN_cond : std_logic:='0'; --Per-packet CRC enable
PHUGEN_cond : std_logic:='0'; --Per-packet huge enable
OVERR_cond : std_logic:='0'; --Per-packet over ride
TXCENI_cond : std_logic:='1'; --Transmit clock enable
RXCENI_cond : std_logic:='1'; --Receive clock enable
TPUR_cond : std_logic:='0';
--#################################################-- CONDITIONS FOR WRITE FIFO --#######################

write_width_tx : integer range 0 to 2048:=32;
write_depth_tx : integer range 0 to 2048:=360;
write_addr_bus_w_tx : integer range 0 to 16:=9;
read_addr_bus_r_tx : integer range 0 to 16:=11;
read_width_tx : integer range 0 to 2048:=8;

--#################################################-- CONDITIONS FOR READ FIFO -- #######################

write_width_rx : integer range 0 to 2048:=8;
write_depth_rx : integer range 0 to 2048:=360*4;
write_addr_bus_w_rx : integer range 0 to 16:=11;
read_addr_bus_r_rx : integer range 0 to 16:=9;
read_width_rx : integer range 0 to 2048:=32;
start_pause : integer range 0 to 256:=5

);

port (
emp,fill_rst : out std_logic;
nRST,p_full : out std_logic;
for_counter : out std_logic;
---##################### -- GLOBAL PORTS -- ####################################
MF100_MHz : in std_logic; -- Global clock for system
reset : in std_logic; -- Global reset
data_is_valid : out std_logic; -- Data is ready for transmiting to the tcp/ip
countData : out std_logic_vector(8 downto 0); -- Number of data which were reading
retry : out std_logic; -- Collision has been detected
rx_rd_clk : in std_logic;
fifo_rst_tx : in std_logic; -- Reset of transmit fifo
--tx_wr_en : in std_logic; -- Transmit fifo write enable

rx_rd_en : in std_logic; -- Receive fifo read enable
rx_dout : out std_logic_VECTOR(read_width_rx-1 downto 0); -- Receive fifo output port

--###################### -- SMII INTERFACE INTERFACE -- ########################
MDC : out std_logic; -- Managment data clock
MDO : out std_logic; -- Managment inout port
MDOEN : out std_logic; -- Managment data enable
--###################### -- MII TRANSMIT INTERFACE -- ##########################
tx_clk : in std_logic; -- Transfer data clock
MTXD : out std_logic_vector(3 downto 0); -- Transmit data vector
MTXEN : out std_logic; -- Transmit enable
MTXER : out std_logic; -- Transmit error
MCRS : in std_logic; -- Carrier sense
MCOL : in std_logic; -- Collision detect

--##################### -- MII RECEIVE INTERFACE -- ##########################
rx_clk : in std_logic; -- Receive data clock
MRXD : in std_logic_vector(3 downto 0); -- Receive data vector
MRXDV : in std_logic; -- Receive data valid
MRXER : in std_logic; -- Receive error

--#################### -- INTERFACE MODULE INTERFACE -- ######################

NOCFR : out std_logic; -- No cipher
DLFCT : out std_logic; -- Disable link fail counter
FRCQ : out std_logic; -- Force quite
ENJAB : out std_logic; -- Enable jaber protection
PHYMOD : out std_logic; -- PHY mode
SPEED : out std_logic; -- Speed selection
SSRR : in std_logic_vector(4 downto 0); -- SMII Status Read register
TSVP_m : out std_logic;
TSV_m : out std_logic_vector(51 downto 0);
RSVP_m : out std_logic;
RSV_m : out std_logic_vector(30 downto 0)


);

end MAC_full;

architecture Behavioral of MAC_full is

component Interface_manager is
generic (
--####################### -- MAC REGISTERS DECLARATION -- ###############################################

MAC1_man : std_logic_vector(15 downto 0); --MAC Configuration register #1
MAC2_man : std_logic_vector(15 downto 0); --MAC Configuration register #2
IPGT_man : std_logic_vector(15 downto 0); --Back-to-back Inter-packet-Gap register
IPGR_man : std_logic_vector(15 downto 0); --Non-Back-to-back Inter-packet-Gap register
CLRT_man : std_logic_vector(15 downto 0); --Collision Window/Retry register
MAXF_man : std_logic_vector(15 downto 0); --Maximum Frame register 1536 bytes
SUPP_man : std_logic_vector(15 downto 0); --PHY Support register (SMII/RMII/PMD/ENDEC)
MCFG_man : std_logic_vector(15 downto 0); --MII Mgmt Configuration
SA0_man : std_logic_vector(15 downto 0); --Station Address
SA1_man : std_logic_vector(15 downto 0); --Station Address
SA2_man : std_logic_vector(15 downto 0) --Station Address

);

port (


Retry_man : out std_logic;
data_received : out std_logic;

--####################### -- TX-interface declaration -- ################################

tx_int_clk_man : in std_logic;
tx_rst_man : in std_logic;
TPD_man : out std_logic_vector(7 downto 0);
TPSF_man : out std_logic;
TPEF_man : out std_logic;
TPUD_man : in std_logic;
TPRT_man : in std_logic;
TPAB_man : in std_logic;



--###################### -- RX-interface declaration -- ##################################

rx_int_clk_man : in std_logic;
rx_rst_man : in std_logic;
RPD_man : in std_logic_vector(7 downto 0);
RPDV_man : in std_logic;
RPSF_man : in std_logic;
RPEF_man : in std_logic;
PCRF_man : in std_logic;


--##################### -- Host interface declaration -- ##################################

host_clk_man : in std_logic;
host_rst_man : in std_logic;
HSTRST_man : out std_logic;
RSTBP_man : out std_logic;
HSTCSN_man : out std_logic;
HSTWRN_man : out std_logic;
HSTADX_man : out std_logic_vector(7 downto 0);
HSTIDAT_man : out std_logic_vector(15 downto 0);
HSTOE_man : in std_logic;
HSTODAT_man : in std_logic_vector(15 downto 0);
RRST_man : in std_logic;
TRST_man : in std_logic;

-- #################### -- Declaration of receive fifo ports -- ###########################

din_re : out std_logic_vector (7 downto 0);
rst_re : out std_logic;-- RX_FIFO reset pin
wr_en_re : out std_logic;


-- ################### -- Declaration of transmit fifo ports -- ###########################

rd_en_tr : out std_logic;
almost_empty_tr : in std_logic;
valid_tr : in std_logic;
dout_tr : in std_logic_vector (7 downto 0);
full_tr : in std_logic;
empty_tr : in std_logic
);
end component Interface_manager;



component counter_fill is
port(
clk : in std_logic;
ena : in std_logic;
reset : in std_logic;
data : out std_logic_vector(31 downto 0)
);
end component;


component time_delimiter is
port(
clk : in std_logic;
rst : in std_logic;
enable : out std_logic;
full : in std_logic
);
end component;



component fifo is
generic(
write_width : integer;
write_depth : integer;
write_addr_bus_w : integer;
read_addr_bus_r : integer;
read_width : integer
);
port(
w_clk,r_clk,rst,we,re,w180_clk : in std_logic;
valid,underflow,empty,full,overflow,almost_empty : out std_logic;
write_count,read_count : out std_logic_vector(23 downto 0);
write_data : in std_logic_vector(write_width-1 downto 0);
read_data : out std_logic_vector(read_width-1 downto 0)
);

end component fifo;

component pe_macmii is
port(
pre_ref,ref_clk,divref,tx_clk,rx_clk,mtxci,txcen,txceni,mrxci,rxcen,rxceni,crs,c
ol,mdi : in std_logic;
tpd : in std_logic_vector(7 downto 0);
tpsf,tpef,tpur,tpcf : in std_logic;
tptv : in std_logic_vector(15 downto 0);
thdf,rx_dv : in std_logic;
rxd : in std_logic_vector(3 downto 0);
rx_er,ppaden,pcrcen,phugen,overr,hstclk, hstrst, hstwrn, hstcsn : in std_logic;
hstadx : in std_logic_vector(7 downto 0);
hstidat : in std_logic_vector(15 downto 0);
ssrr : in std_logic_vector(4 downto 0);
rstbp : in std_logic;
mtxco,txceno,mrxco,rxceno,tx_en : out std_logic;
txd : out std_logic_vector(3 downto 0);
tx_er,mdc,mdo,mdoen,tpud,tpdn,tprt,tpab,tsvp : out std_logic;
tsv : out std_logic_vector(51 downto 0);
txcf,srxen : out std_logic;
rpd : out std_logic_vector(7 downto 0);
rpdv,rpsf,rpef,rsvp : out std_logic;
rsv : out std_logic_vector(30 downto 0);
pcrf : out std_logic;
crco : out std_logic_vector(8 downto 0);
crcg,bco,mco,ucad : out std_logic;
hstodat : out std_logic_vector(15 downto 0);
hstoe,nocfr,dlfct,frcq,enjab,speed,phymod,srstint_ref,srstint_tx,srstint_rx,trst
,rrst : out std_logic
);
end component pe_macmii;


component clk_and_reset_mod is

generic (skip_cycles : integer range 0 to 256);

port(
host_int_clk,tx_int_clk,rx_int_clk,mod_reset : in std_logic;
host_rst,tx_rst,rx_rst,fifo_start_rst : out std_logic;
tx_fifo_rd_clk,rx_fifo_wr_clk,MTXCI,MRXCI,HSTCLK : out std_logic;
F100_MHz,F100MHz_PS,F125MHz_PS : out std_logic
);

end component clk_and_reset_mod;

signal s_host_rst,s_tx_rst,s_rx_rst : std_logic;
signal s_fifo_start_rst : std_logic;
signal s_tx_fifo_rd_clk : std_logic;
signal s_rx_fifo_wr_clk : std_logic;
signal valid_tx : std_logic;
signal rd_en_tx : std_logic;
signal wr_en_rx : std_logic;
signal dout_tx : std_logic_VECTOR(read_width_tx-1 downto 0);
signal din_rx : std_logic_VECTOR(write_width_rx-1 downto 0);
signal s_empty : std_logic;
signal full_tx : std_logic;
signal almost_empty_tx : std_logic;
signal s_TPD : std_logic_vector(7 downto 0);
signal s_TPSF : std_logic;
signal s_TPEF : std_logic;
signal s_TPUD : std_logic;
signal s_TPDN : std_logic;
signal s_TPRT : std_logic;
signal s_TPAB : std_logic;
signal s_RPD : std_logic_vector(7 downto 0);
signal s_RPDV : std_logic;
signal s_RPSF : std_logic;
signal s_RPEF : std_logic;
signal s_PCRF : std_logic;
signal s_HSTRST : std_logic;
signal s_HSTCLK : std_logic;
signal s_HSTCSN : std_logic;
signal s_HSTWRN : std_logic;
signal s_HSTADX : std_logic_vector(7 downto 0);
signal s_HSTIDAT : std_logic_vector(15 downto 0);
signal s_HSTOE : std_logic;
signal s_HSTODAT : std_logic_vector(15 downto 0);
signal s_RRST : std_logic;
signal s_TRST : std_logic;
signal s_MTXCI : std_logic;
signal s_MRXCI : std_logic;
signal s_F100_MHz,s_F100MHz_PS : std_logic;
signal s_crco : std_logic_vector(8 downto 0);
signal s_crcg,s_bco : std_logic;
signal s_mco,s_ucad : std_logic;
signal s_tx_fifo_rst,s_rx_fifo_rst : std_logic;
signal fifo_rst_rx,s_F125MHz_PS : std_logic;
signal read_data_to_buf : std_logic_VECTOR(read_width_rx-1 downto 0);
signal s_enable,tx_wr_en : std_logic;
signal tx_din : std_logic_VECTOR(write_width_tx-1 downto 0); -- Input port of transmit fifo
begin

--p_full<=full_tx ;
s_tx_fifo_rst<=(fifo_rst_tx or s_fifo_start_rst);
s_rx_fifo_rst<=(fifo_rst_rx or s_fifo_start_rst);
nRST<=(not reset);
--p_full<=full_tx;
--fill_rst<=s_tx_fifo_rst;
--for_counter<=s_F100_MHz ;

U1:Interface_manager
generic map (
MAC1,MAC2,IPGT,IPGR,CLRT,MAXF,SUPP,MCFG,SA0,SA1,SA2
)

port map (
Retry_man=>retry,data_received=>data_is_valid,TPD_man=>s_TPD,TPSF_man=>s_TPSF,TPEF_man=>s_TPEF,TPUD_man=>s_TPUD,TPRT_man=>s_TPRT,TPAB_man=>s_TPAB,
RPD_man=>s_RPD,RPDV_man=>s_RPDV,RPSF_man=>s_RPSF,RPEF_man=>s_RPEF,PCRF_man=>s_PCRF,HSTRST_man=>s_HSTRST,HSTCSN_man=>s_HSTCSN,HSTWRN_man=>s_HSTWRN,
HSTADX_man=>s_HSTADX,HSTIDAT_man=>s_HSTIDAT,HSTOE_man=>s_HSTOE,HSTODAT_man=>s_HSTODAT,RRST_man=>s_RRST,TRST_man=>s_TRST,din_re=>din_rx,rst_re=>fifo_rst_rx,
wr_en_re=>wr_en_rx,rd_en_tr=>rd_en_tx,almost_empty_tr=>almost_empty_tx,valid_tr=>valid_tx,dout_tr=>dout_tx,full_tr=>full_tx,empty_tr=>s_empty,
tx_int_clk_man=>s_MTXCI,tx_rst_man=>s_tx_rst,rx_int_clk_man=>s_MRXCI,rx_rst_man=>s_rx_rst,host_clk_man=>s_HSTCLK,host_rst_man=>s_host_rst
);

U2:pe_macmii
port map (
pre_ref=>tx_clk,ref_clk=>tx_clk,divref=>DIVREF_cond,tx_clk=>tx_clk,rx_clk=>rx_clk,mtxci=>s_MTXCI,txcen=>TXCENI_cond,txceni=>TXCENI_cond,mrxci=>s_MRXCI,
rxcen=>RXCENI_cond,rxceni=>RXCENI_cond,crs=>MCRS,col=>MCOL,mdi=>'0',tpd=>s_TPD,tpsf=>s_TPSF,tpef=>s_TPEF, tptv=>x"0000",tpur=>TPUR_cond,tpcf=>TPCF_cond,--tptv=>TPTV_m,
thdf=>THDF_cond,rx_dv=>MRXDV,rxd=>MRXD,rx_er=>MRXER,ppaden=>PPADEN_cond,pcrcen=>PCRCEN_cond,phugen=>PHUGEN_cond,overr=>OVERR_cond,hstclk=>s_HSTCLK,hstrst=>s_HSTRST,
hstwrn=>s_HSTWRN,hstcsn=>s_HSTCSN,hstadx=>s_HSTADX,hstidat=>s_HSTIDAT,ssrr=>SSRR,tx_en=>MTXEN,txd=>MTXD,tx_er=>MTXER,mdc=>MDC,mdo=>MDO,mdoen=>MDOEN,
rstbp=>reset,tpud=>s_TPUD,tpdn=>s_TPDN,tprt=>s_TPRT,tpab=>s_TPAB,tsvp=>TSVP_m,tsv=>TSV_m,rpd=>s_RPD,rpdv=>s_RPDV,rpsf=>s_RPSF,rpef=>s_RPEF,rsvp=>RSVP_m,
rsv=>rsv_m,pcrf=>s_PCRF,crco=>s_crco,crcg=>s_crcg,bco=>s_bco,mco=>s_mco,ucad=>s_ucad,hstodat=>s_HSTODAT,hstoe=>s_HSTOE,nocfr=>NOCFR,dlfct=>DLFCT,frcq=>FRCQ,
enjab=>ENJAB,speed=>SPEED,phymod=>PHYMOD,--srstint_ref,srstint_tx,srstint_rx,
trst=>s_TRST,rrst=>s_RRST
);


U3_tx_fifo:fifo
generic map (write_width_tx,write_depth_tx,write_addr_bus_w_tx,read_addr_bus_r_tx,read_width
_tx)
port map(
w_clk=>s_F100_MHz,w180_clk=>s_F100MHz_PS,r_clk=>s_tx_fifo_rd_clk,rst=>s_tx_fifo_rst,we=>tx_wr_en,re=>rd_en_tx,valid=>valid_tx,almost_empty=>almost_empty_tx,
full=>full_tx,empty=>s_empty,--write_count=>,read_count=>,
write_data=>tx_din,read_data=>dout_tx
);




U4_rx_fifo:fifo
generic map (write_width_rx,write_depth_rx,write_addr_bus_w_rx,read_addr_bus_r_rx,read_width
_rx)
port map(
w_clk=>s_rx_fifo_wr_clk,w180_clk=>s_F125MHz_PS,r_clk=>rx_rd_clk,rst=>s_rx_fifo_rst,we=>wr_en_rx,re=>rx_rd_en,--valid=>valid_tx,
--empty=>empty_tx,full=>full_tx,--write_count=>,read_count=>,
write_data=>din_rx,read_data=>read_data_to_buf
);

U5_clk_rst_block:clk_and_reset_mod
generic map(start_pause)
port map (
host_int_clk=>MF100_MHz,tx_int_clk=>tx_clk,rx_int_clk=>rx_clk,mod_reset=>reset,host_rst=>s_host_rst,tx_rst=>s_tx_rst,rx_rst=>s_rx_rst,
fifo_start_rst=>s_fifo_start_rst,tx_fifo_rd_clk=>s_tx_fifo_rd_clk,rx_fifo_wr_clk=>s_rx_fifo_wr_clk,MTXCI=>s_MTXCI,MRXCI=>s_MRXCI,HSTCLK=>s_HSTCLK,
F100_MHz=>s_F100_MHz,F100MHz_PS=>s_F100MHz_PS,F125MHz_PS=>s_F125MHz_PS

);


U6_buffer_array:
for i in (read_width_rx-1) downto 0 generate

Buffer_Array: OBUF port map (I=>read_data_to_buf(i),O=>rx_dout(i));

end generate;


U7:time_delimiter
port map(
clk=>s_F100_MHz,rst=>reset,enable=>s_enable,full=>full_tx
);

U8:counter_fill
port map(clk=>s_F100_MHz,ena=>s_enable,reset=>s_tx_fifo_rst,data=>tx_din
);
end Behavioral;

Go to the top of the page
 
+Quote Post
artix
сообщение Oct 27 2010, 13:12
Сообщение #9


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

Группа: Свой
Сообщений: 136
Регистрация: 19-10-10
Из: Киев
Пользователь №: 60 262



проблему временно решил(для этапа отладки), указав порт tx_wr_en как buffer , и подключился к нему в топ файле 2 мя другими блоками счетчиком для заполнения рамы и самим фифо собсно... тоесть как я понимаю использование сигнала приводило к настолько большому усложнению схемы трассировки что студия отправляла меня с такими замашками? как я понимаю с помощью констрайнов нужно каким то образом сгрупировать блоки на кристале чтобы взаимосвязи между ними были минимальны, а их взаиморазмещение на - наиболее оптимальным? Но с констрайнами раньше не сталкивался настолько глубоко... Подскажите плз, как тут разрулиться!!! всем ответившим -большое спасибо!!!!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


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


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