Hallo, danke für das Beispiel. Werde ich mir noch ansehen. Da ich aber
in diesen IP noch eine AXIStream Schnittstelle einbauen möchte, muss ich
erstmal verstehen wie die bisherige AXI Lite Schnittstelle funktioniert.
Ich habe zunächst habe ich folgendes ausprobiert. Ich habe mir eine
Testbench erstellt die mir das Lesen und schreiben simulieren soll. Das
Schreiben geht(siehe auskommentiert) aber das Lesen leider nicht. Meine
Testbench sieht folgendermaßen aus:
1 | comp_design_1_wrapper : design_1_wrapper
|
2 | port map (
|
3 | S_AXI_araddr => S_AXI_araddr,
|
4 | S_AXI_arready => S_AXI_arready,
|
5 | S_AXI_arvalid => S_AXI_arvalid,
|
6 | S_AXI_awaddr => S_AXI_awaddr,
|
7 | S_AXI_awready => S_AXI_awready,
|
8 | S_AXI_awvalid => S_AXI_awvalid,
|
9 | S_AXI_bready => S_AXI_bready,
|
10 | S_AXI_bresp => S_AXI_bresp,
|
11 | S_AXI_bvalid => S_AXI_bvalid,
|
12 | S_AXI_rdata => S_AXI_rdata,
|
13 | S_AXI_rready => S_AXI_rready,
|
14 | S_AXI_rresp => S_AXI_rresp,
|
15 | S_AXI_rvalid => S_AXI_rvalid,
|
16 | S_AXI_wdata => S_AXI_wdata,
|
17 | S_AXI_wready => S_AXI_wready,
|
18 | S_AXI_wstrb => S_AXI_wstrb,
|
19 | S_AXI_wvalid => S_AXI_wvalid,
|
20 | UART_rxd => RX,
|
21 | UART_txd => UART_txd,
|
22 | s_axi_aclk => clk,
|
23 | s_axi_aresetn => reset_l
|
24 | );
|
25 |
|
26 | bclk_process : PROCESS
|
27 | BEGIN
|
28 | clk <= '0';
|
29 | WAIT FOR clk_period/2;
|
30 | clk <= '1';
|
31 | WAIT FOR clk_period/2;
|
32 | END PROCESS;
|
33 |
|
34 | axi_simu : process
|
35 | begin
|
36 | reset_l <= '0';
|
37 | wait for 300 ns;
|
38 | reset_l <= '1';
|
39 | wait for 300 ns;
|
40 |
|
41 | S_AXI_araddr <= "0001";
|
42 | S_AXI_arvalid <= '1';
|
43 | -- S_AXI_awaddr <= "0100";
|
44 | -- S_AXI_awvalid <= '1';
|
45 | -- S_AXI_wdata <= "00000000000000000000000001010011";
|
46 | -- S_AXI_wvalid <= '1';
|
47 |
|
48 | wait;
|
49 | end process;
|
50 |
|
51 | -- Add your stimulus here ...
|
52 | uart_simu : process
|
53 | begin
|
54 | -- read "10101010"
|
55 | RX <= '0'; --start bit
|
56 | wait for 8680 ns;
|
57 | RX <= '1'; --"1
|
58 | wait for 8680 ns;
|
59 | RX <= '0'; --"10
|
60 | wait for 8680 ns;
|
61 | RX <= '1'; --"101
|
62 | wait for 8680 ns;
|
63 | RX <= '0'; --"1010
|
64 | wait for 8680 ns;
|
65 | RX <= '1'; --"10101
|
66 | wait for 8680 ns;
|
67 | RX <= '0'; --"101010
|
68 | wait for 8680 ns;
|
69 | RX <= '1'; --"1010101
|
70 | wait for 8680 ns;
|
71 | RX <= '0'; --"10101010"
|
72 | wait for 8680 ns;
|
73 | RX <= '0'; -- parity
|
74 | wait for 8680 ns;
|
75 | RX <= '1'; -- stop bit
|
76 | wait for 8680 ns;
|
77 | end process;
|
78 |
|
79 |
|
80 | end Behavioral;
|
Wenn ich das simuliere dann sehe ich das auf S_AXI_1_RDATA keine Daten
kommen(siehe Anhang). Das heisst irgendwas geht da schief beim lesen.
Kann du mir sagen was ich falsch gemacht habe? Danke