Minimum N Numbers hjælp verilog eller VHDL

K

kalyansumankv

Guest
Er der nogen måde, at jeg kan finde ud af det minimum af N-numre med et minimum af indsats ved hjælp verilog eller VHDL

 
Det kunne gøres
MEN
[1] er n fast eller variabel?
[2] Hvad er den smule længde af de tal?
[3] Hvordan er de repræsenteret? Underskrevet eller unsigned?
[4] Er der nogen begrænsninger på antallet af clock cycles er nødvendige for at beregne minimum?
[5] er tallene lagret i en hukommelse (register fil, eller BlockRAM), eller de er indført sekventielt til kernen?

venlig hilsen,
Mostafa m.Amer

 
[1] er n fast eller variabel?
- N er Fast lad os sige 64

[2] Hvad er den smule længde af de tal?
- Det er en 8-bit værdi

[3] Hvordan er de repræsenteret? Underskrevet eller unsigned?
- Det er en usigneret nummer

[4] Er der nogen begrænsninger på antallet af clock cycles er nødvendige for at beregne minimum?
- Mindste antal cyklusser[5] er tallene lagret i en hukommelse (register fil, eller BlockRAM), eller de er indført sekventielt til kernen?
- Nej de er ikke lagret i en hukommelse

 
HI,
Nedenfor er en VHDL kode, som accepterer en strøm af 8-bit unsigned numre og output den mindste af de indførte strøm.

Den indeholder et register (min) for at holde den mindste værdi.Dette register er initialiseres til den størst mulige værdi, 255, når ENA indgang er aktiv min er i forhold til den tilførte nummer (NO_IN) og ved hjælp af en 8-bit LT komparator beslutter whther at gemme NO_IN i min eller holde den tidligere værdi af min uberørt.

værdien af min altid outed @ MIN_OUT
hver sammenligne vil tage et enkelt taktcyklus.

Kode:-------------------------------------------------- --------------------------------

- Ingeniør: Eng.
Mostafa M. Amer

--

- Opret Date: 10:28:31 11/17/2008

- Design Navn: Minimum N 8-bit unsigned numre

- Modul Navn: minimum_N - Behavioral

-------------------------------------------------- --------------------------------

library IEEE;

brug IEEE.STD_LOGIC_1164.ALL;

brug IEEE.STD_LOGIC_ARITH.ALL;

brug IEEE.STD_LOGIC_UNSIGNED.ALL;enhed minimum_N er

Port (NO_IN: i std_logic_vector (7 downto 0); - Input strøm

ENA: i STD_LOGIC; - Aktiver

CLK: i STD_LOGIC - Ur

MIN_OUT: out std_logic_vector (7 downto 0 ));-- Den mindste af åen

ende minimum_N;architecture Behavioral af minimum_N er

signal min: std_logic_vector (7 downto 0): = "11.111.111" - Oprindeligt min til det størst mulige antal

begyndkomparator:

proces (CLK)

begynd

if (ENA = '1 ') then

if (CLK'event og CLK = '1 ') then

if (NO_IN <min) så

min <= NO_IN;

anden

min <= min;

end if;

end if;

anden

min <= min;

end if;

end process;MIN_OUT <= min;ende Behavioral;
 
Kære Mostafa,

Tak for koden,
til min bedste forståelse,
den kode, som du vil tage N-antallet af cyklusser,
til output den mindste af N-numre ...

Anyways jeg kom op med et design, der vil tage langt mindre end N cykler
at beregne et minimum af N - numre.,
Dette kan gøres med en lille parallel behandling ...

 
Kære kalyansumankv,

Du sagde Tal er ikke gemt i hukommelsen => De er indført for at kernen sekventielt => jeg ud fra, at de vil blive indført en række på hver cyklus => Indførelse af numrene vil tage N cykler => Hvis at få det mindste tog mindre end N cykler (BTW jeg er meget interesseret i at se dit design, plz aksjer) stadig indførelsen af input vil tage N => Jeg konkluderede, at der vil være noget behov for den ekstra hardware, hvis der ikke kommer en hastighed gevinst.

Har jeg ret?Det er sådan jeg tænkte abot det: $: $, men jeg kan være forkert

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />
Venlig hilsen,
Mostafa M. Amer

 
Kære Mustafa,

Ja jeg sagde, at tallene ikke er lagret i en hukommelse,
men jeg ll være med N-numre af moduler, som kører i paralle (som vist i fig) l og
Jeg har brug for at finde min for disse numre ..

Og den fremgangsmåde, jeg fulgte, er som følger,
siger, at N er 64,
opdele de numre som en gruppe på 8 hver og finde min for dem,
der behov 8 cyklusser,
og efter 8 cyklusser ll du stå tilbage med 8 numre igen og
gentage aboce proces for at finde min for tht 8 tal.
på en hel du ll være nødvendigt med 8 8 cyklusser for at finde min for 64-numre
Beklager, men du skal logge ind for at se denne vedhæftede fil

 
Hmmm
i et sådant tilfælde u kan anse den anden yderlighed skal du ikke bruge ressourcedeling på alle, og opbygge en komparator træ med (log2 N)-niveauer og (N-1) 8-bit LT sammenligningsstofferne.en ren kombinatorisk kredsløb.og hvis flere N-numre sæt anvendes du kan bruge pipelined arkitektur.

Venlig hilsen,
Mostafa M. Amer

 
Jeg tror jeg kan ske,
men jeg nødt til at gøre en synchrous design,
så jeg gjorde denne måde,

anyways tak alot for replyy

 
ur wellcome

ps: hele træet kan være synkroniseret, men at der vil påvirke den overordnede klokfrekvens, kan u overveje pipelined arkitektur
MEN
hvis ur løsning virker fint, hold for det

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Smile" border="0" />
 
Ja mit design alt virker fint,
mange tak for jeres hjælp ...

 
Kompleksiteten af problemet er (sammenlign forsinkelse) * log2 (N)
De er dybest set udfører et binært træ (og dermed log2 (N)) af sammenligningen operationer (hver koster en "sammenligne forsinkelse")

Jeg har ingen idé om, hvor meget af den logik du kan komprimere til en enkelt taktcyklus.
men lave en combo sky, som gør dette, syntetisere og se dine slap - derefter beslutte, hvor og hvor mange registre til brug for at rørledningen.Det er naturligvis i betragtning af, du ønsker high throughput.
Hvis ikke bare bruge en multi cykelsti på den logik.

ND.

http://asicdigitaldesign.wordpress.com/

 
Kære Nir Dahan,

Tak for det råd at gå til Combo Cloud,
Jeg ll prøve det samme ....

Hilsen
Kalyan Suman

 

Welcome to EDABoard.com

Sponsor

Back
Top