kevin_
Don't Blame Me, Blame Yourself..
Hallo,
Ik ben (ondertussen) student industriële wetenschappen: elekctronica-ICT, 1ste academiejaar en voor Lab Digitale systemen moeten we een VHDL file maken en simuleren met ModelSim. Het probleem is echter dat de theorielessen een pak achter lopen op de lab-sessies... daarom komt al mijn kennis uit voorbeelden die op het net staan (geen commentaar dus, mijn excuses)
.....
Het probleem is dat we pas uitleg krijgen over vhdl na de deadline voor het verslag van het labo.
Kloppen deze 2 codes?
Want daarna moesten we een vhdl-file schrijven voor een testbench (zodat ik in modelsim kon simuleren) aan te maken, en hier ben ik volledig in de mist gegaan mede omdat wij hier nooit enige uitleg over hebben gekregen...
Ik hoop dat jullie mij nuttige tips kunnen geven.
Alvast bedankt,
Kevin.
[Bericht gewijzigd door kevin_ op (49%)]
Hoi,
Ik ben zelf net begonnen met het leren van VHDL, ik kan met zekerheid zeggen dat de eerste code klopt, ik had ook nog een testbench liggen dus het simulatie resultaat zie afbeelding.
Wel lastig dat je geen uitleg in VHDL, ik had nog een testbench liggen. Ik hem van wat commentaar gezien. deze testbench kan je met een paar simpele veranderingen geschikt maken voor de full adder code.
library IEEE;
use IEEE.Std_logic_1164.all;
use IEEE.Numeric_Std.all;
entity pulse_tb is --een lege entity maken
end;
architecture bench of pulse_tb is --de architectuur instellen
component pulse --definieer component
Port ( s0 : in STD_LOGIC; --definiier in en uitgangen
s1 : in STD_LOGIC;
s2 : in STD_LOGIC;
p : out STD_LOGIC);
end component;
signal s0: STD_LOGIC; --stel de signals in
signal s1: STD_LOGIC;
signal s2: STD_LOGIC;
signal p: STD_LOGIC;
begin
uut: pulse port map ( s0 => s0, -- de port map voor de stimulus
s1 => s1,
s2 => s2,
p => p );
stimulus: process
begin --hier komt welke pinnen je hoog en laag wilt maken
s0 <= '0'; s1 <= '0'; s2 <= '0'; wait for 10 NS;
s0 <= '0'; s1 <= '0'; s2 <= '1'; wait for 10 NS;
s0 <= '0'; s1 <= '1'; s2 <= '0'; wait for 10 NS;
s0 <= '0'; s1 <= '1'; s2 <= '1'; wait for 10 NS;
s0 <= '1'; s1 <= '0'; s2 <= '0'; wait for 10 NS;
s0 <= '1'; s1 <= '0'; s2 <= '1'; wait for 10 NS;
s0 <= '1'; s1 <= '1'; s2 <= '0'; wait for 10 NS;
s0 <= '1'; s1 <= '1'; s2 <= '1'; wait for 10 NS;
s0 <= '0'; s1 <= '0'; s2 <= '0'; wait for 10 NS;
wait; --deze is nodig, anders stopt de simulatie niet
end process;
end;
over de 4 bit adder kan ik nog niet zoveel zeggen, want ik snap port mappen nog niet echt.
Maarten.
kevin_
Don't Blame Me, Blame Yourself..
Zeer hard bedankt!
Ik heb mijn versie van de full adder gesimuleerd gekregen (questie van methode onder knie te krijgen) en ga nu testbench schrijven voor de 4 bit adder en hopelijk werkt deze dan.
Al bedankt voor je input!
ensen in de toekomst nog zal helpen.
[Bericht gewijzigd door kevin_ op (92%)]
flipflop
"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein
Wat in dit geval ook mooi kan is een random patroon generator op beide ingangen van je adder aansluiten. In je testbench reken je dan ook het juiste antwoord uit (eigenlijk maak je dus een model van de adder). Vervolgens laat je de generatoren hun patroon genereren waarbij je telkens kijkt of de uitgang overeenkomt met de waarde uit je testbench. Dit laat je zo lang lopen als nodig.
Hoewel, op zich is het wat overkill voor zo'n simpel blokje, je kunt ook gewoon met een tellertje alle waardes langslopen. Alle waardes moet je wel testen anders weet je niet of het 100% werkt.
Tof dat je de leert, ik zit op het 3de burgerlijk ingenieur en we hebben tot nu toe enkel FPGA leren gebruiken met matlab en schema.