1 | library ieee;
|
2 | use ieee.std_logic_1164.all;
|
3 | use ieee.std_logic_unsigned.all;
|
4 | use ieee.numeric_std.all;
|
5 |
|
6 | entity xillydemo is
|
7 | port (
|
8 | PCIE_PERST_B_LS : IN std_logic;
|
9 | PCIE_REFCLK_N : IN std_logic;
|
10 | PCIE_REFCLK_P : IN std_logic;
|
11 | PCIE_RX_N : IN std_logic_vector(3 DOWNTO 0);
|
12 | PCIE_RX_P : IN std_logic_vector(3 DOWNTO 0);
|
13 | GPIO_LED : OUT std_logic_vector(3 DOWNTO 0);
|
14 | PCIE_TX_N : OUT std_logic_vector(3 DOWNTO 0);
|
15 | PCIE_TX_P : OUT std_logic_vector(3 DOWNTO 0));
|
16 | end xillydemo;
|
17 |
|
18 | architecture sample_arch of xillydemo is
|
19 | component xillybus
|
20 | port (
|
21 | PCIE_PERST_B_LS : IN std_logic;
|
22 | PCIE_REFCLK_N : IN std_logic;
|
23 | PCIE_REFCLK_P : IN std_logic;
|
24 | PCIE_RX_N : IN std_logic_vector(3 DOWNTO 0);
|
25 | PCIE_RX_P : IN std_logic_vector(3 DOWNTO 0);
|
26 | GPIO_LED : OUT std_logic_vector(3 DOWNTO 0);
|
27 | PCIE_TX_N : OUT std_logic_vector(3 DOWNTO 0);
|
28 | PCIE_TX_P : OUT std_logic_vector(3 DOWNTO 0);
|
29 | bus_clk : OUT std_logic;
|
30 | quiesce : OUT std_logic;
|
31 |
|
32 | user_r_read_8_rden : OUT std_logic;
|
33 | user_r_read_8_empty : IN std_logic;
|
34 | user_r_read_8_data : IN std_logic_vector(7 DOWNTO 0);
|
35 | user_r_read_8_eof : IN std_logic;
|
36 | user_r_read_8_open : OUT std_logic;
|
37 | user_w_write_8_wren : OUT std_logic;
|
38 | user_w_write_8_full : IN std_logic;
|
39 | user_w_write_8_data : OUT std_logic_vector(7 DOWNTO 0);
|
40 | user_w_write_8_open : OUT std_logic);
|
41 | end component;
|
42 |
|
43 |
|
44 | component ac_fifo_wrap
|
45 | port (
|
46 | --== General Interface ==--
|
47 | RST: IN std_logic;
|
48 | CLK: IN std_logic;
|
49 |
|
50 | --== Input Interface ==--
|
51 | nwrite: IN std_logic;
|
52 | full: OUT std_logic;
|
53 | din: IN std_logic_VECTOR(7 downto 0);
|
54 |
|
55 | --== Output Interface ==--
|
56 | empty: OUT std_logic;
|
57 | nread: IN std_logic;
|
58 | dout: OUT std_logic_VECTOR(7 downto 0)
|
59 | );
|
60 | end component;
|
61 |
|
62 |
|
63 | signal bus_clk : std_logic;
|
64 | signal quiesce : std_logic;
|
65 |
|
66 | signal reset_8 : std_logic;
|
67 |
|
68 | signal user_r_read_8_rden : std_logic;
|
69 | signal user_r_read_8_empty : std_logic;
|
70 | signal user_r_read_8_data : std_logic_vector(7 DOWNTO 0);
|
71 | signal user_r_read_8_eof : std_logic;
|
72 | signal user_r_read_8_open : std_logic;
|
73 |
|
74 | signal user_w_write_8_wren : std_logic;
|
75 | signal user_w_write_8_full : std_logic;
|
76 | signal user_w_write_8_data : std_logic_vector(7 DOWNTO 0);
|
77 | signal user_w_write_8_open : std_logic;
|
78 |
|
79 | signal s_dout_din : std_logic_vector(7 DOWNTO 0);
|
80 | signal s_nread_full : std_logic;
|
81 | signal s_empty_nwrite : std_logic;
|
82 |
|
83 | begin
|
84 | xillybus_ins : xillybus
|
85 | port map (
|
86 |
|
87 |
|
88 | -- Ports related to /dev/xillybus_read_8
|
89 | -- FPGA to CPU signals:
|
90 | user_r_read_8_rden => user_r_read_8_rden,
|
91 | user_r_read_8_empty => user_r_read_8_empty,
|
92 | user_r_read_8_data => user_r_read_8_data,
|
93 | user_r_read_8_eof => user_r_read_8_eof,
|
94 | user_r_read_8_open => user_r_read_8_open,
|
95 |
|
96 | -- Ports related to /dev/xillybus_write_8
|
97 | -- CPU to FPGA signals:
|
98 | user_w_write_8_wren => user_w_write_8_wren,
|
99 | user_w_write_8_full => user_w_write_8_full,
|
100 | user_w_write_8_data => user_w_write_8_data,
|
101 | user_w_write_8_open => user_w_write_8_open,
|
102 |
|
103 | -- General signals
|
104 | PCIE_PERST_B_LS => PCIE_PERST_B_LS,
|
105 | PCIE_REFCLK_N => PCIE_REFCLK_N,
|
106 | PCIE_REFCLK_P => PCIE_REFCLK_P,
|
107 | PCIE_RX_N => PCIE_RX_N,
|
108 | PCIE_RX_P => PCIE_RX_P,
|
109 | GPIO_LED => GPIO_LED,
|
110 | PCIE_TX_N => PCIE_TX_N,
|
111 | PCIE_TX_P => PCIE_TX_P,
|
112 | bus_clk => bus_clk,
|
113 | quiesce => quiesce
|
114 | );
|
115 |
|
116 |
|
117 | -- CPU to FPGA FIFO
|
118 | ac_fifo_wrap_write: ac_fifo_wrap
|
119 | port map(
|
120 | RST => reset_8,
|
121 | CLK => bus_clk,
|
122 | nwrite => not user_w_write_8_wren,
|
123 | full => user_w_write_8_full,
|
124 | din => user_w_write_8_data,
|
125 | empty => s_empty_nwrite, --
|
126 | nread => s_nread_full, --
|
127 | dout => s_dout_din--
|
128 | );
|
129 |
|
130 | -- FPGA to CPU FIFO
|
131 | ac_fifo_wrap_read: ac_fifo_wrap
|
132 | port map(
|
133 | RST => reset_8,
|
134 | CLK => bus_clk,
|
135 | nwrite => s_empty_nwrite, --
|
136 | full => s_nread_full, --
|
137 | din => s_dout_din, --
|
138 | empty => user_r_read_8_empty,
|
139 | nread => not user_r_read_8_rden,
|
140 | dout => user_r_read_8_data
|
141 | );
|
142 |
|
143 |
|
144 | -- these lines must be preserved in the XillyDemo
|
145 | reset_8 <= not (user_w_write_8_open or user_r_read_8_open);
|
146 | user_r_read_8_eof <= user_r_read_8_empty and not(user_w_write_8_open);
|
147 |
|
148 | end sample_arch;
|