Ich komm' grad nicht weiter - ich habe zwei Dateien, eine Datei
(SR_RS_CE.vhd) mit der Beschreibung eines Scheiberegisters mit ReSet und
ClockEnable und eine Datei (SR_RS_CE_TST.vhd), in der dieses
Scheiberegister instanziiert wird und die die Testumgebung für das
Schieberegister realisiert.
Ich erhalte u.a. die Fehlermeldung "@N:Can't find top module!", finde
aber keine Möglichkeit, ein Top Module zu definieren.
Ich gestehe auch, dass ich das Hierarchiekonzept von VHDL noch nicht
verstehe - man "soll" Datei wie die darin enthaltenen Entitäten
benennen, aber allein das "soll" statt "muss" belegt, dass darauf nicht
ein Mechanismus basieren kann, der das C-include ersetzt?
Der width-Fehler ist mittlerweile geklärt!
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 SR_RS_CE_TST is
|
7 | end SR_RS_CE_TST;
|
8 |
|
9 | architecture behavioral of SR_RS_CE_TST is
|
10 |
|
11 | constant cycles : integer := 10;
|
12 | signal lss : std_logic := '1'; -- aktive Low Slave Select
|
13 | signal hss : std_logic := '0'; -- aktive Hgh Slave Select
|
14 | signal res : std_logic := '1'; -- RESet of main shift reg
|
15 | signal sck : std_logic := '0'; -- Simulation ClocK
|
16 | signal clk : std_logic := '0'; -- SCI CLocK
|
17 | signal ena : std_logic := '0'; -- ENAble clock of main shift reg
|
18 | signal din : std_logic := '0'; -- Data IN main shift reg
|
19 | signal reg : std_logic_vector(6 downto 0);
|
20 | signal dat : std_logic_vector(47 downto 0) := x"9EAA_CC00_3355";
|
21 |
|
22 | component SR_RS_CE is
|
23 | generic (width : integer := 8);
|
24 | port(ck : in std_logic;
|
25 | ce : in std_logic;
|
26 | rs : in std_logic;
|
27 | di : in std_logic;
|
28 | do : out std_logic_vector(width-1 downto 0));
|
29 | end component;
|
30 |
|
31 | for all : SR_RS_CE use entity work.SR_RS_CE(behavioral);
|
32 |
|
33 | begin
|
34 |
|
35 | hss <= not lss;
|
36 | res <= not hss;
|
37 | clk <= not lss and sck;
|
38 | ena <= not reg(0);
|
39 | din <= dat(47);
|
40 |
|
41 | SR : SR_RS_CE generic map (width => 7) port map (clk,ena,res,din,reg);
|
42 |
|
43 | process
|
44 | begin
|
45 | for i in 1 to cycles loop
|
46 | sck <= not sck;
|
47 | wait for 25 ns;
|
48 | sck <= not sck;
|
49 | wait for 25 ns;
|
50 | end loop;
|
51 | wait; -- simulation stops here
|
52 | end process;
|
53 |
|
54 | process
|
55 | variable cnt : integer range 0 to 63 := 0;
|
56 | begin
|
57 | if falling_edge(sck) then
|
58 | if (lss='0') then
|
59 | dat(47 downto 1) <= dat(46 downto 0);
|
60 | end if;
|
61 | if (cnt=1) then
|
62 | lss <= '0';
|
63 | end if;
|
64 | if (cnt=9) then
|
65 | lss <= '1';
|
66 | end if;
|
67 | cnt := cnt + 1;
|
68 | end if;
|
69 | end process;
|
70 |
|
71 | end behavioral;
|