3 to 1 MUX i VHDL, latch?

Elektronikrelaterade (på komponentnivå) frågor och funderingar.
arte
Inlägg: 317
Blev medlem: 13 januari 2006, 01:18:50

3 to 1 MUX i VHDL, latch?

Inlägg av arte »

Hej,

Jag skall göra 3-1 MUX i VHDL men är lite osäker.

Jjag behöver MUXa 3 signaler, en 4MUX är onödig då.

case cmd is
when "00" =>
r<=data1;
when "01" =>
r<=data2;
when "10" =>
r<=data3;
when "11" =>
when others =>
end case;

Detta kommer att skapa en latch, vad exact innebär detta i hårdvara?
Kommer detta att innebära att när cmd = "11" så kan vad som helst finnas på ut porten?

CMD kommer aldrig att bli "11"

Det skall tilläggas att det är i en FPGA, och att en 4-1 MUX tar 64 LUTS medans ovanstående tar 65.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Inlägg av blueint »

I din kod borde rimligtvis den gamla statusen bli bevarad i fallet "11". Och för att åstdakomma det kommer förmodligen en minnesbit att allokeras. Vilket tar mer utrymme. Så kanske "r<=data0" för "11" vore en lösning?

Du får låsa ner strukturen så att endast 00, 01, 10 kan förekomma.
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Strunta i when "11" och ersätt med when others => null så borde det fungera:

Kod: Markera allt

case cmd is 
  when "00" => 
     r<=data1; 
  when "01" => 
    r<=data2; 
  when "10" => 
    r<=data3; 
  when others => 
    null;
end case; 
arte
Inlägg: 317
Blev medlem: 13 januari 2006, 01:18:50

Inlägg av arte »

grejen är att jag får en warning av synth verktyget där den säger att en latch kan skapa timing problem.

Men ifall jag aldrig kommer skicka in värder "11" så kanske det inte spelar någon roll??
toffe
Inlägg: 2
Blev medlem: 13 maj 2006, 18:20:59

Inlägg av toffe »

Du får en latch om det finns vägar i din kod där signalen inte tilldelas. Då måste ju signalen behålla sitt gamla värde och för det krävs ett minneselement (latch).

Oftast är det inte det du vill så undvik det. Latchar skapar problem för timinganalysen dessutom ...
Skriv svar