Dessuten & comparation i VHDL ...

S

sp

Guest
'a' og 'b' er std_logic_vector (3 downto 0), usignerte pakke inkludert

b <= a '1 ';

for ovennevnte tillegg ...i tillegg er gjort wth <a "0001"> eller <a "1000">?

Jeg liker tht n the quartus2 viser ingen feil ...

'a' er 4 bits men '1 'er én bit,,, men det kan legge sammen? ..krever det ikke samme bredde for å legge sammen? ...

Jeg prøver å lese arith pakken, men jeg kan ikke synes å forstå dott er skrevet der,,, er opplevelser ikke enuff

<img src="http://www.edaboard.com/images/smiles/icon_razz.gif" alt="Razz" border="0" />--------------------------------------------------

og for komparator ...sammenlignes fra venstre eller høyre? ... MSB sammenligne første eller LSB sammenligne først? ..

takk ....

hilsen,
sp

 
Godt spørsmål!

b <= a '1 '; dette vil syntetisere å incrementor

b <= a '0001 '; dette vil syntetisere til en huggorm

Tenk om selve maskinvaren du ønsker å implementere og deretter skrive Verilog
kode for å bare beskrive maskinvaren.

Dette gjelder ur komparator spørsmål også!
Håper dette hjelper!

 
nand_gate takk for hjelpen ...

Så hvis jeg bare vil legge til en, så det gjør ingen diff i inkrementell og hoggorm, ikke sant?

(a "0001") = (a '1 ') ???????

er det det samme da ??...

bcos hvis u vil legge til ett til 32bits, så u ville trenge 31 enheter av nuller foran?

og og dott jeg mente i mitt første innlegg er tht hvis u do
b <= a '1 ';

den vil gjøre <a "0001"> eller <a "1000">?
Hvis '1 'er også std_logic type ...

mange takk ..

hilsen,
sp

 
Angående tillegg i VHDL:

1.Resultatet av tillegg lengde er den maksimale lengden på operander.
2.Legge er definert for signert, usignert og overstyrt for std_logic_vector.
3.Operander må være av samme type, bortsett fra å legge til en konstant som i ditt tilfelle.
4.Den minste Operand vil bli utvidet til å matche størrelsen på større en i henhold til type operander.Signert er utvidet med seg.
5.Når det gjelder ditt tilfelle:Code:

b <= a '1 ';
 
thank you amraldo ....

Jeg forstår enda mer nå ....

ieee.std_logic_unsigned.all brukes ....
a er std_logic_vector (3 downto 0)
b er std_logic_vector (4 downto 0)
så hvisCode:

b <= (0 & A) '11 ';
 
Jeg antar fra siste innlegget du vil modellen er en bære-out.Måten du gjorde er helt korrekt.
Men hva med modellering en bærer i?
Hvis du skrev:
Code:

a, b: in std_logic_vector (3 downto 0);

cin: in std_logic;

c: out std_logic_vector (4 downto 0);

...

c <= a b cin;
 
takk for ur hjelpe ....Jeg er ikke tenker på å gjøre bære på likevel ....

Jeg gjør floating point multiplikasjon ....tht akkurat når jeg vil legge til en '1 'binær til et signal ...jeg er lat å skrive inn så mange '0 'biter (32bits er dott jeg gjør

<img src="http://www.edaboard.com/images/smiles/icon_razz.gif" alt="Razz" border="0" />

)....

Så jeg prøver wth a '1 'både hav diff lengden, men ingen feil ...så jeg lurer på hvordan det '1 'kan legge til "en" hvis "A" er 4 bits ...'1 'er tolker som 0001 eller 1000 ...

men folk fortsette å fortelle andre ting .....

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Trist" border="0" />

hehehe

så jeg kommer ut et annet .... a '11 '...så spørsmålet mitt er 11 er oversette til 0011 eller 1100 ....Jeg leste arith pakken ...Ni nesten besvime

<img src="http://www.edaboard.com/images/smiles/icon_razz.gif" alt="Razz" border="0" />

jeg er fortsatt ganske nytt for VHDL ...

takker alle for hjelpen,,, jeg er takknemlig ...
men vennligst svar på spørsmålet mitt ...

hilsen,
sp

 

Welcome to EDABoard.com

Sponsor

Back
Top