signal address, reghigh, reglow : std_logic_vector(15 downto 0);
begin
- address <= x"0008";
- reghigh <= x"DEAD";
- reglow <= x"AFFE";
+-- address <= x"0008";
+-- reghigh <= x"DEAD";
+-- reglow <= x"AFFE";
+ address <= x"0003";
+ reghigh <= x"000B";
+ reglow <= x"000D";
-- IDLE
-------------------------------------------------------------------------
if current_state = IDLE then
- if APL_FIFO_FULL_IN = '1' or reg_counter = PREFILL_LENGTH then
- next_state <= RUNNING;
- next_APL_SEND_OUT <= '0';
+ if reg_counter = TRANSFER_LENGTH then
+ next_state <= WAITING;
+ elsif APL_FIFO_FULL_IN = '1' then
+ next_state <= IDLE;
else
next_APL_SEND_OUT <= buf_APL_SEND_OUT;
next_state <= WRITING;
-- WAITING
-----------------------------------------------------------------------
elsif current_state = WAITING then
+ next_APL_SEND_OUT <= '0';
if APL_RUN_IN = '1' or buf_APL_SEND_OUT = '1' then
next_state <= WAITING;
else
signal reg_TXD : std_logic_vector(15 downto 0);
signal reg_TX_EN : std_logic;
+ signal TLK_CLK_neg : std_logic;
+signal CLK_Out, CLK_FB_Out, FB_CLK : std_logic;
begin
-- STAT(3 downto 0) <= fifo_status_a;
STAT(5) <= fifo_empty_a;
STAT(6) <= fifo_rd_en_m;
STAT(7) <= fifo_empty_m;
+ STAT(8) <= fifo_full_a;
+ STAT(31 downto 16) <= reg_RXD;
process(TLK_RX_CLK)
begin
--Sender
-------------
+U_DCM_Transmitter: DCM
+ generic map(
+ CLKIN_PERIOD => 10.00, -- 30.30ns
+ STARTUP_WAIT => FALSE,
+ PHASE_SHIFT => 0,
+ DESKEW_ADJUST => "SOURCE_SYNCHRONOUS",
+ CLKOUT_PHASE_SHIFT => "FIXED"
+ )
+ port map (
+ CLKIN => TLK_CLK,
+ CLKFB => FB_CLK,
+ DSSEN => '0',
+ PSINCDEC => '0',
+ PSEN => '0',
+ PSCLK => '0',
+ RST => RESET,
+ CLK0 => CLK_FB_Out, -- for feedback
+ CLK90=> CLK_Out,
+ LOCKED => open
+ );
+--
+U0_BUFG: BUFG port map (I => CLK_FB_Out, O => TLK_CLK_neg);
+U1_BUFG: BUFG port map (I => CLK_FB_Out, O => FB_CLK);
+
+
FIFO_MED_TO_OPT: trb_net_fifo_16bit_bram_dualport
port map(
- read_clock_in => TLK_CLK,
+ read_clock_in => TLK_CLK_neg,
write_clock_in => CLK,
read_enable_in => fifo_rd_en_m,
write_enable_in => fifo_wr_en_m,
TLK_TXD <= reg_TXD;
TLK_TX_EN <= reg_TX_EN;
- process(TLK_CLK)
+ process(TLK_CLK_neg)
begin
- if rising_edge(TLK_CLK) then
+ if rising_edge(TLK_CLK_neg) then
if internal_reset = '1' then
reg_TXD <= (others => '0');
reg_TX_EN <= '0';
end if;
end process;
- process(TLK_CLK)
+ process(TLK_CLK_neg)
begin
- if rising_edge(TLK_CLK) then
+ if rising_edge(TLK_CLK_neg) then
if internal_reset = '1' then
last_fifo_rd_en_m <= '0';
else