VHDL-Forum - Anfänger

LFSR

LFSR

hi, ich hab angefangen ein wenig VHDL zu lernen,
dazu hab ich mir ein tutorial durchgelesen.
da stand unter anderem wie man flip flops implementiert:

entity ASYNC_FF is
port ( D, CLK, SET, RST : in std_ulogic;
Q : out std_ulogic);
end ASYNC_FF;

architecture A of ASYNC_FF is
begin
process (CLK, RST, SET)
begin
if (RST = `1`) then
Q

Re: LFSR

Hallo,

die Aufgabe in der Klausur gibt absolut genug Information.
Du solltest Dich noch ein bisschen mehr mit VHDL beschäftigen und dann einen Lösungsvorschlag geben. Diesen können wir dann ja hier im Forum diskutieren.

Das Forum ist nicht dazu da Aufgaben zu lösen.

Einen echten Lerneffekt hast Du nur wenn Du auch verstehst worüber wir reden.

Gruesse,

Dr. Faustus

Re: LFSR

ja ich weiß ich will ja auch keinen hier ausnutzen damit er mir die lösung aufschreibt, nur hab ich absolut keinen plan wie ich da jetzt rangehen soll.

hab mir ja auch schon die wichtigsten sachen von diesem tutorial http://www.vhdl-online.de/tutorial/ durchgelesen.

aber ich komm einfach nicht voran bei dieser aufgabe, ein paar tipps wären echt hilfreich.

hmm....
ist denn meine entitiy, wie ich sie aufgeschrieben hab, denn wenigstens schonmal richtig?
oder muss da noch was ergänzt werden?

bei der architecture, muss ich dem Y ein Q zuweisen?
wobei Q eine varialbe ist die ich vor der begin anweisung erstelle?

Re: LFSR

ok - na dann mal los....

die entity ist leider nicht richtig.

Hast Du dir Abbildung 1 mal genau angesehen?

Du hast y als std_ulogic deklariert. Wie viel bit breit ist std_ulogic und wieviel bit hat y?
--> Typ??



zum lernen halte ich das hier für einigermaßen brauchbar:
http://esd.cs.ucr.edu/labs/tutorial/

Re: LFSR

also laut dem tutorial sieht die STD_ULOGIC folgendermaßen aus:

TYPE STD_ULOGIC IS (
`U`, -- uninitialized
`X`, -- Forcing Unknown
`0`, -- Forcing 0
`1`, -- Forcing 1
`Z`, -- High Impedance
`W`, -- Weak Unknown
`L`, -- Weak 0
`H`, -- Weak 1
`-`, -- don`t care);

ich nehme mal an dass jedes mögliche signal somit 1 bit groß ist.
oder wird das eher so gesehen, dass

U = 0000
X = 0001
0 = 0010
1 = 0011
Z = 0100
W= 0101
L = 0110
H = 0111
- = 1000
oder so in der art, so dass jede wert vom typ std_ulogic aus vier bits besteht?


alternativ könnt ich denk ich anstelle std_ulogic auch einfach den typ bit wählen für y.

und zu der frage aus wievielen bits ein y besteht so, würd ich sagen aus einem.
y(1) = 1 bit groß
y(2) = 1 bit groß
usw.

Re: LFSR

ich hab noch ein bisschen weiter überlegt.
also ich habe 8 flip flops.

zunächst hab ich gedacht dass ich eine entity erstelle und eine archtitektur, wobei in der architektur das verhalten EINES flip flops beschrieben wird.
Die entity zeigt die eingänge und ausgänge eines flipflops.

nun denk ich aber, dass ich hier nicht ein einziges flip flip betrachte und davon insgesamt 8 stück erschafe und die dann verbinde, sondern ich muss anders vorgehen:

zunächst: die entity die ich erstelle repräsentiert nicht die eingänge und ausgänge EINES flipflops sonder die eingänge und ausgänge des gesamten registers (also der 8flip flops zusammen).

also würd ich das in etwa so machen:

entity LFSR is
port( Clk: in std_ulogic;
Rst: in std_ulogic;
Y: out bit_vector(7 downto 0)
);
end LFSR

architecture Functionality of LFSR is

signal X: bit;

begin
Y

Re: LFSR

Super - ist richtig würde ich sagen.

Gruesse,

Dr. Faustus

Re: LFSR

hmm so ganz passt mir meine lösung aber noch nicht:

1.momentan lese und schreibe ich auf Y im process , aber in der entity hat Y den mode out, das heißt ich darf auf Y nur schreiben.
ich könnte ja den mode buffer oder inout verwenden, dann könnte ich auf Y sowohl lesen als auch schreiben, insofern ich das richtig verstanden habe.

2. ich muss irgendwas mit der anweisung " Y

Re: LFSR

Zitat: blubbblubb
hmm so ganz passt mir meine lösung aber noch nicht:

1.momentan lese und schreibe ich auf Y im process , aber in der entity hat Y den mode out, das heißt ich darf auf Y nur schreiben.--> stimmt!
ich könnte ja den mode buffer oder inout verwenden, dann könnte ich auf Y sowohl lesen als auch schreiben, insofern ich das richtig verstanden habe.

Zitat: blubbblubb
2. ich muss irgendwas mit der anweisung " Y

Re: LFSR

also müßte meine lösung dann folgendermaßen aussehen:

entity LFSR is
port( Clk: in std_ulogic;
Rst: in std_ulogic;
Y: out bit_vector(7 downto 0)
);
end LFSR

architecture Functionality of LFSR is

signal X: bit;
signal Y_Vector: bit_vector(7 downto 0);

begin
Y

Re: LFSR

Das signal X muss innerhalb des prozesses als Variable und nicht übergeordnet als signal deklariert sein.

Du solltest den code mal simulieren. Damit lernt mann am besten.

cu