Need Help in Parallel to Serial VHDL-module

M

missbirdie

Guest
Hallo
Ik heb een vraag over de volgende VHDL-code om te zetten van parallelle naar seriële:

library IEEE;
gebruik IEEE.STD_LOGIC_1164.ALL;
gebruik IEEE.STD_LOGIC_ARITH.ALL;
gebruik IEEE.STD_LOGIC_UNSIGNED.ALL;

entiteit PAR2SER is
Port (DIN: in STD_LOGIC;
MODE: in STD_LOGIC;
CLK: in STD_LOGIC;
RESET: in STD_LOGIC;
SDOUT: out STD_LOGIC);
einde PAR2SER;

- Doel: Implement belangrijkste architectuur van PAR2SER

architectuur gedrag van PAR2SER is

signaal idata: std_logic_vector (7 Downto 0); - interne gegevens

beginnen - GEDRAG

- Doel: Main proces

proces (CLK, RESET)
beginnen - proces
- Activiteiten naar aanleiding van asynchrone reset (actief hoog)
als RESET = 1 dan
SDOUT <= 0;
Idata <= "00000000";

- Activiteiten veroorzaakt door stijgende flank van de klok

elsif evenement CLK en CLK = 1 dan
MODE geval is
wanneer "00" => - geen werking
null;
wanneer "01" => - load operatie
Idata <= DIN;
wanneer "10" => - naar links
SDOUT <= idata (7);
voor mloop in 6 Downto 0 lus
Idata (mloop 1) <= idata (mloop);
end loop; - mloop
wanneer anderen => - geen operatie anders
null;
einde geval;
end if;
einde proces
end gedrag;

Ik klinkt wellicht gek, maar wat is de mode voor pin?

 
De auteur blijkbaar beschouwd het nuttig om serializer operatie controle met een modus ingang.Er zijn andere opties, ook.Je moet weten uw wensen.

Maar de code heeft een syntactische fout, oorzaak modus input is een std_logic beetje, maar gebruikt als een vector.Het kan niet compileren zoals.

 
Waar wat FVM zegt.
Bovendien heb ik u vertellen dat dit een zeer slechte manier van VHDL-code.
Het bouwen voor zal nooit worden gebruikt: dat is niet "C".

U kunt dit doen in een heleboel verschillende manier, hoe beter ik denk dat instantiëren een teller en gebruik een verschuiving te registreren.
In VHDL je hebt om uit te vinden wat u realiseren met de Flip Flop.

 
De lus in deze plaats is OK, het is gewoon een andere (lange adem) manier om een verschuiving register te schrijven.Dit is dezelfde functie in een enkele lijn:
Code:

Idata (7 Downto 1) <= idata (6 Downto 0);
 

Welcome to EDABoard.com

Sponsor

Back
Top