Forum: FPGA, VHDL & Co. Testbench/Simulation Sinus - fail


von Zayna Maseem (Gast)


Lesenswert?

Ich versuche, die algorithmische Ebene eines DDS-Sinus zu simulieren, um 
meinen Entwurf zu überprüfen. Die Testbench dazu zeigt keine 
Signaländerungen, nicht einmal die Clock läuft.
Daher versuchte ich, eine einfachere Testbench für
http://www.lothar-miller.de/s9y/categories/31-DDFS
zu schreiben, aber diese ist auch fehlerhaft - viele "UUUUUUU" und 
maximal die Clock läuft.
1
LIBRARY ieee;
2
USE ieee.std_logic_1164.ALL;
3
USE ieee.numeric_std.ALL;
4
5
--------------------------------------------------
6
ENTITY tbnew IS
7
--------------------------------------------------
8
9
END tbnew;
10
11
--------------------------------------------------
12
ARCHITECTURE behavioral OF tbnew IS 
13
--------------------------------------------------
14
15
   SIGNAL clk       :   std_logic := '0';
16
   SIGNAL freq_data :   std_logic_vector (7 downto 0);  
17
   signal Dout      :   std_logic_vector (7 downto 0);        
18
   
19
   COMPONENT ddfs
20
   PORT( 
21
   
22
   CLK       : in  std_logic;          
23
   Freq_Data : in  std_logic_vector (7 downto 0);          
24
   Dout      : out std_logic_vector (7 downto 0));
25
   END COMPONENT;
26
27
28
BEGIN
29
   uut: ddfs PORT MAP(clk => clk, freq_data => freq_data, dout=> dout);
30
   clk <= not clk after 10 ns;
31
   freq_data <= b"01010101"; 
32
END behavioral;

Was muss ich anders machen? Ich könnte nicht einmal den Sinus 
überprüfen....

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Zayna Maseem schrieb:
> Daher versuchte ich, eine einfachere Testbench für
> http://www.lothar-miller.de/s9y/categories/31-DDFS
> zu schreiben, aber diese ist auch fehlerhaft
Das Problem liegt nicht im geposteten Code. Diese Testbench läuft 
tadellos gegen das verlinkte Design. Zeig doch mal den Rest des Designs 
und evtl. noch einen Screenshot deiner Waveform...


>   freq_data <= b"01010101";
Du kannst das b vor dem binären String weglassen, weil b die 
Deafaulteinstellung für Stringvektoren ist und damit gilt:
b"01010101" = "01010101"

von Edi M. (Gast)


Lesenswert?

Lothar Miller schrieb:
> Deafaulteinstellung für Stringvektoren ist und damit gilt:
> b"01010101" = "01010101"
Wieder was gelernt, toll! :-)

@Zayna
Du wirst schon den Sinusgenerator selber aufzeigen müssen, wenn einer 
helfen soll. Wie erzeugst Du den Wert?

Wenn der b-Vektor die Frequenz sein soll, dann täte ich die auch mal 
etwas variieren.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.