Geneating hodiny tep na externí spouštěcí signál

D

dadda007

Guest
Jsem se snažil vyvinout hardware model pro generování hodiny puls 1 mikro-sekund trvání v ocurance na spouštěcí signál.Mám 2 vstupní signály jedno, hodinového signálu a druhá je aktivační signál.Výstupní signál je 1 micro-sekunda puls.Pro realizaci jsem použil stejnou metodou:

1) Použijte D-Flipflop který bere hodinového signálu (doba kratší než 1 us) jako vstupní hodiny a spouštěcí signál jako vstup pro 'pin D'.

2) Při výstupu z q-bar používáme zpoždění jednotku 1 nás.Výstup Q-bar je pak výstup do vstupu 2 vstupní branou a spolu s ostatními vstup je výstup 'q' s d-flipflop.

Myšlenka tohoto modelu je, že pokud jde o spouštěcí impuls od nejnižší k nejvyšší q-bar výstup jde vysoké až nízké, a když je q-bar výstup prošel zpoždění jednotku, dostaneme posunul q-bar puls.A když jsme Q a Q-bar výstup, očekávaný výstup 1-nás impuls.

Napsal jsem následující kód ve VHDL, ale neposkytl požadovaný výkon.

knihovna IEEE;
IEEE.STD_LOGIC_1164.all použití;

jednotka puls je

port (
ack: v BIT;
clk: in bit;
puls: out bit);

konec jednotka puls;

architektura pulse_behav z pulsu je

signálu q, qbar, d, qbar_delay;

začít

process (CLK)

začít

d <= ack;

if (clk'event a CLK = '1 ') then
q <= d;
end if;

qbar_delay <= převod qbar po 1. námi;
puls <= q a qbar;

end process;

konec pulse_behav;Jsem nováček a nové potřebují pomoc<img src="http://www.edaboard.com/images/smiles/icon_exclaim.gif" alt="Exclamation" border="0" />
 
and q<=d1. D <= ack
a q <= d

nebudete muset následovat 'architektura' na ttl 7474,should work;

q <= ack
by měly pracovat;
2.

- seems you assume

není úkol qbar
- zdá se předpokládat,
kompilátor pozná, co dělat s qbar jen z názvu;
3.

your design would eventually work

pokud jste opravu qbar
váš návrh by nakonec pracovat
v simulátoru, ale ne v FPGA;qbar after
1 us
<- there is

qbar_delay <= převod
qbar po
1. nás
<- tam je;

žádný hardware uvnitř FPGA realizovat převod po;

Jediný způsob, jak měřit čas na čistě digitální okruh je počítání
svazích periodického signálu o známé období [hodiny];
alespoň v případě, že zpoždění je větší než několik nanosekund;
, takže byste měli mít hodiny připojené k vašemu hardwaru, který
provozuje pult, spouštěcího signálu, který umožňuje počítání, logické
který dokáže rozpoznat hodnotu čítače odpovídající vaší
požadovanou délku pulsu;
---
Naposledy upravil j_andr dne 14 srpna 2008 6:52, upraveno 1 celkem

 
Ahoj,

Máte-li návrh impuls k synthesisable, pak budete muset počítat počet hodin cylces, jako j_andr psal dříve.

tak proces bude vypadat takto:
Proces (ACK)
začít
Pokud pak Reset
puls <= '0 ';
rising_edge elsif (CLK) then
Pokud ack = '1 ', pak
Pokud počet <= number_of_pulses_needed_for_1us pak
puls <= '1 ';
jiné
puls <= '0 ';
end if;
Pokud count = max_count pak
count <= 0;
jiné
count <= count 1;
end if;
end process;

Na vás, abyste určil potřebné signály a práce je v detailu.
Pokud se vám tento kód se hodí vaši potřebu, můžete darovat.
díky

 

Welcome to EDABoard.com

Sponsor

Back
Top