Geneating et ur puls på en ekstern trigger signal

D

dadda007

Guest
Jeg har forsøgt at udvikle en hardware-model til at generere en clock puls af 1 mikro-sekunders varighed på ocurance af en trigger signal.Jeg har 2 indgangssignaler en, uret signal og et andet er den udløsende signal.Udgangssignalet er 1 mikro-sekund puls.For gennemførelsen af den samme jeg brugte følgende metode:

1) Brug en D-Flipflop som tager clock-signal (periode mindre end 1 os) som uret input og udløse signal som input til »D« pin.

2) Ved produktion af q-bar vi bruger en forsinkelse enhed 1 os.Produktionen af de q-bar output er derefter lagt i input fra de 2 input AND Gate, med de andre input er det output 'q' af d-flipflop.

Idéen om en sådan model er, der udløser pulsen går fra lav til høj Q-bar output går fra høj til lav, og når de q-bar output er passeret gennem forsinkelse enhed, vi får flyttet q-bar puls.Når vi OG q og q-bar output, den forventede produktion er en 1-os puls.

Jeg skrev følgende kode i VHDL, men det gav ikke den ønskede effekt.

library IEEE;
brug IEEE.STD_LOGIC_1164.all;

enhed puls er

port (
ack: i BIT;
CLK: i BIT;
puls: ud BIT);

udgangen enhed puls;

arkitektur pulse_behav af puls er

signal q, qbar, d, qbar_delay;

begynd

proces (CLK)

begynd

d <= ack;

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

qbar_delay <= overførsel qbar efter den 1. os;
puls <= q og qbar;

end process;

ende pulse_behav;Jeg er en ny nybegynder og har brug for hjælp<img src="http://www.edaboard.com/images/smiles/icon_exclaim.gif" alt="Udråbstegn" border="0" />
 
and q<=d1. D <= ack
og q <= d

du behøver ikke at følge »arkitektur« af TTL 7.474,should work;

q <= ack
bør arbejde;
2.

- seems you assume

Der er ingen opgave at qbar
- synes du antager
compileren vil genkende hvad de skal gøre med qbar lige fra navnet;
3.

your design would eventually work

hvis du reparere qbar
dit design på sigt vil arbejde
i en simulator, men ikke i en FPGA;qbar after
1 us
<- there is

qbar_delay <= overførsel
qbar efter
1. os
<- der er;

ingen hardware inde i FPGA til at indse, overførsel efter;

den eneste måde at måle tid i et rent digitalt kredsløb er optælling
skråninger af et periodisk signal af kendt periode [ur];
mindst hvis forsinkelsen er større, da flere nanosekunder;
så du skal have et ur tilsluttet til din hardware, som
kører en tæller, en trigger signal, som gør det muligt at tælle, logik
som kan genkende disken værdi, der svarer til din
ønskede puls længde;
---
Senest redigeret af j_andr den 14 august, 2008 6:52, rettet 1 gang i alt

 
Hej,

Hvis du designer den puls, der skal synthesisable, så bliver du nødt til at tælle en række ur cylces, ligesom j_andr skrev før.

så processen vil se sådan ud:
proces (ACK)
begynd
hvis Nulstil derefter
puls <= '0 ';
elsif rising_edge (CLK) then
hvis ack = '1 'så
hvis count <= number_of_pulses_needed_for_1us derefter
puls <= '1 ';
anden
puls <= '0 ';
end if;
hvis count = max_count derefter
count <= 0;
anden
count <= count 1;
end if;
end process;

Op til dig at erklære de nødvendige signaler og finde ud af det i detaljer.
Hvis du finder denne kode passer til dine behov, kan du altid donere.
tak

 

Welcome to EDABoard.com

Sponsor

Back
Top