Ajutor!

H

hlmwps

Guest
entitate FreqMeter este de
port (a nu putea suporta: in std_logic;
CE: in std_logic;
bclk: in std_logic;
gclk: in std_logic;
Start: in std_logic;
num: integer în intervalul 10 - 1000;
de peste: out std_logic;
databus: out std_logic_vector (47 downto 0)
);
sfârşitul FreqMeter;

arhitectura comportamentale ale FreqMeter este

bz_count semnal: integer;
gc_count semnal: integer gama 0 - 1000;
bz_ena semnal, ena: std_logic;
CLR semnalului: std_logic;
tmp_start semnal, tmp_over: std_logic;

resetn semnal, resetd: std_logic;

începe

databus <= conv_std_logic_vector (bz_count, 4

<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Răcoros" border="0" />

,

proces (CE, start) începe
în cazul în care CE = '0 'şi începe = '0', apoi
resetn <= '0 ';
elsif CE = '0 'şi rising_edge (start), apoi
resetn <= '1 ';
sfârşitul anului în cazul în care;
Procesul de sfârşitul anului;

proces (bclk)
începe
în cazul în care rising_edge (bclk), apoi
resetd <= resetn;
sfârşitul anului în cazul în care;
Procesul de sfârşitul anului;

CLR <= resetn şi (nu resetd);

de peste <= tmp_over;

proces (resetare, CLR, a începe)
începe
în cazul în care nu putea suporta = '0 'sau CLR = '1', apoi
tmp_start <= '0 ';
falling_edge elsif (start), apoi
tmp_start <= '1 ';
sfârşitul anului în cazul în care;
Procesul de sfârşitul anului;

proces (resetare, CLR, tmp_over, ena, tmp_start)
începe
în cazul în care nu putea suporta = '0 'sau CLR = '1' sau (tmp_over = '1 'şi ena = '0'), apoi
bz_ena <= '0 ';
elsif rising_edge (tmp_start), apoi
bz_ena <= '1 ';
sfârşitul anului în cazul în care;
Procesul de sfârşitul anului;bzcounter: proces (resetare, bclk, CLR, bz_ena, ena)

începe
în cazul în care nu putea suporta = '0 'sau CLR = '1', apoi
bz_count <= 0;
rising_edge elsif (bclk), apoi
în cazul în care bz_ena = '1 'şi ena = '1', apoi
bz_count <= bz_count 1;
sfârşitul anului în cazul în care;
sfârşitul anului în cazul în care;
Procesul de sfârşitul anului;

gccounter: proces (resetare, gclk, CLR, bz_ena)
începe
în cazul în care nu putea suporta = '0 'sau CLR = '1', apoi
gc_count <= 0;
tmp_over <= '0 ';
ena <= '0 ';
falling_edge elsif (gclk), apoi
în cazul în care bz_ena = '1 ', apoi
gc_count <= gc_count 1;
în cazul în care gc_count = num apoi
ena <= '0 ';
gc_count <= num-1;
tmp_over <= '1 ';
alt
ena <= '1 ';
tmp_over <= '0 ';
sfârşitul anului în cazul în care;
sfârşitul anului în cazul în care;
sfârşitul anului în cazul în care;
Procesul de sfârşitul anului;

sfârşitul comportamentale;Adăugat după 5 minute:De mai sus este un exemplu despre VHDL contor de frecvenţă!
Am simula o cu Modelsim 6.0!Aceasta poate funcţiona foarte bine şi funcţia este bun!
Dar când am descărcaţi-o într-un CPLD Xinlix XC95144XL, funcţia sa nu face bine!
Te rog ajuta-ma pentru a afla unde este eroarea!

 
CPLD şi FPGA sunt ment pentru circuite logice sincrone.
Logic dvs. conţine blocuri asynchonous atât de multe.Şi aceasta este problema!
Mai întâi de toate, face logica întreg sincrone!
Check out interne ale CPLD şi a vedea ce este permis şi ceea ce nu este!

 

Welcome to EDABoard.com

Sponsor

Back
Top