CLK sadalīt aparatūras skaits

S

sp

Guest
i rakstīt VHDL CLK plaisu kodu ...un i HAV šaubas par to ...ceru, ka kāds var man palīdzēt ...

mans jautājums ir kā tht ....kods ir sekot ...Kods:

bibliotēkas IEEE;

izmantot ieee.std_logic_1164.all;vienība clk_div ir

vispārīgu (N: pozitīvs: = 2);

osta

(Fast_clk, reset: ar std_logic;

slow_clk: buferis std_logic

);

beigās clk_div;arhitektūra uzvedības un clk_div ir

sākt

process (reset, fast_clk)

mainīgs skaits: dabas;

sākt

ja reset = "1", tad

skaits: = 0;

slow_clk <= '0 ';

elsif rising_edge (fast_clk), tad

skaits: = skaits 1;

ja skaits = N tad

slow_clk <= nav slow_clk;

skaits: = 0;

beidzas, ja;

beidzas, ja;

gala procesa;

beigās uzvedības;
 
Neatkarīgi no rezultātiem, ur geting ir pareizi!Kas ur ir parameterising ir tikai
salīdzināt vērtību un nevis skaita counter flops!Ko es domāju ir,
counter esat definēt "mainīgais skaitītājs: dabas;" Tas syntesize uz
32 bitu counter jebkura vērtība N!Tas ir kāpēc jūs saņemat to pašu
datortehnika jebkuram N.
Lai atrisinātu šo jūs definētu conter šādi!
mainīgais skaitītājs: std_logic_vector ((logto bāze 2 N) downto 0);

Šeit jums ir nepieciešams funkciju, lai aprēķinātu log bāzes 2.
Checkout follwing modificēto kodu!

Hope this helps!Kods:

bibliotēkas IEEE;

izmantot ieee.std_logic_1164.all;

izmantot ieee.std_logic_unsigned.all;vienība clk_div ir

sugas (N: pozitīvs: = 10);

osta

(Fast_clk, reset: ar std_logic;

slow_clk: buferis std_logic

);

beigās clk_div;arhitektūra uzvedības un clk_div ir

funkcija log (n: vesels skaitlis) atgriešanās skaitlim ir

mainīgais i: vesels skaitlis: = 1;

mainīgo j: vesels skaitlis: = 2;

sākas - log

bet (n - j> 0) cilpa

j: = j * 2;

i: = i 1;

beigu cilpas;

atgriešanās i;

beigās žurnālā;

sākt

process (reset, fast_clk)

mainīgs skaits: std_logic_vector ((log (N) -1) downto 0);

sākt

ja reset = "1", tad

skaits: = (pārējie => '0 ');

slow_clk <= '0 ';

elsif rising_edge (fast_clk), tad

skaits: = skaits 1;

ja skaits = N tad

slow_clk <= nav slow_clk;

skaits: = (pārējie => '0 ');

beidzas, ja;

beidzas, ja;

gala procesa;

beigās uzvedības;
 
ir kāda kļūda pēdējā IF paziņojumu ??....
Kods:

ja skaits = N tad

slow_clk <= nav slow_clk;

skaits: = (pārējie => '0 ');

beidzas, ja, pēc tam

slow_clk <= nav slow_clk;

skaits: = (pārējie => '0 ');

beidzas, ja;
 
" or " if count = log(N) then
"

"Ja skaits = N, tad"
vai "ja skaits = log (N), tad"kurām viena ir pareiza? ..jebkura Explaination?kāds?

un vēl viens jautājums ....

Kods:

funkcija log (n: vesels skaitlis) atgriešanās skaitlim ir

mainīgais i: vesels skaitlis: = 1;

mainīgo j: vesels skaitlis: = 2;

sākas - log

bet (n - j> 0) cilpa

j: = j * 2;

i: = i 1;

beigu cilpas;

atgriešanās i;

beigās žurnālā;
 
OK!Šeit ir labots kodu!
Kods:

bibliotēkas IEEE;

izmantot ieee.std_logic_1164.all;

izmantot ieee.std_logic_unsigned.all;vienība clk_div ir

sugas (N: pozitīvs: = 10);

osta

(Fast_clk, reset: ar std_logic;

slow_clk: buferis std_logic

);

beigās clk_div;arhitektūra uzvedības un clk_div ir

funkcija log (n: vesels skaitlis) atgriešanās skaitlim ir

mainīgais i: vesels skaitlis: = 1;

mainīgo j: vesels skaitlis: = 2;

sākas - log

bet (n - j> 0) cilpa

j: = j * 2;

i: = i 1;

beigu cilpas;

atgriešanās i;

beigās žurnālā;

sākt

process (reset, fast_clk)

mainīgs skaits: std_logic_vector (log (N / 2) downto 0);

sākt

ja reset = "1", tad

skaits: = (pārējie => '0 ');

slow_clk <= '0 ';

elsif rising_edge (fast_clk), tad

skaits: = skaits 1;

ja skaits = N / 2, tad

slow_clk <= nav slow_clk;

skaits: = (pārējie => '0 ');

beidzas, ja;

beidzas, ja;

gala procesa;

beigās uzvedības;
 
mans jautājums ir ....mēs varam salīdzināt, izmantojot std_logic un pozitīvu veidu? ...
piemēram, šo vienu
Kods:

ja skaits = N / 2, tad
 

Welcome to EDABoard.com

Sponsor

Back
Top