VHDL-kode for dem counter

A

ahsanali

Guest
Jeg har brug for VHDL-kode for dem counter plz help.my e-mail-adresse er: contact2ahsan (at) yahoo.com
 
Hvad er en "dem counter"?
du
har en byte input, måske med en data gyldig, og at du
har for at se, om dataene er lig med x "01" og tælle dem?

Hvis ja jeg håber, at du
er i stand til at skrive den årsag
er det meget enkelt.

hvis det
er det problem, du kan gøre noget lignende dette:

processen (CLK, rstn)
hvis rstn ='0 'og derefter
cnt <= (andre =>'0 ');
elsif clk'event og CLK ='1 'og derefter
hvis datain = x "01"
og derefter
cnt <= cnt 1;
udgangen, hvis;
udgangen, hvis;
ende proces;

Du
har for at finpudse det, såsom at nulstille tælleren, når den
er på sit højeste, eller hvis du
har ekstern signal, tager hensyn en eventuel input_data_valid, lægge cnt om produktion af blokken og sætte en udløser se det på specifical instants ..

 
en's er, at der coutns antallet af ens i en snor .... fx i "001110" der er tre ens.

Min instruktør har givet vink, at:and then call them

gøre Multiplexure; adder; uret
og derefter ringe til dem

 
Kassen dette en ....
Code:

library IEEE;

brug ieee.std_logic_1164.all;

brug ieee.arith.all;enhed ones_count erport (

CLK: i std_logic;

rst_n: i std_logic;

ld_data: i std_logic;

travlt: out std_logic;

data_in: i std_logic_vector (7 downto 0);

count: out std_logic_vector (3 downto 0));udgangen ones_count;arkitektur opfører af ones_count er

signal data: std_logic_vector (7 downto 0);

signal count_i: std_logic_vector (2 downto 0);

signal sum: std_logic_vector (3 downto 0);

begynde - opfører

count <= sum;

processen (CLK, rst_n)

begynde - processen

hvis rst_n ='0 'og derefter - asynkron reset (aktiv lav)

data <= (andre =>'0 ');

count_i <= (andre =>'0 ');

travlt <='0 ';

summen <= (andre =>'0 ');

elsif clk'event og CLK ='1 'og derefter - stigende ur kant

hvis ld_data ='1 'og derefter

data <= data_in;

count_i <= (andre =>'0 ');

travlt <='1 ';

udgangen, hvis;

hvis count_i / = "111" derefter

count_i <= count_i "001";

summen <= sum data (count_i);

udgangen, hvis;

hvis count_i = "111" derefter

summen <= sum data (count_i);

travlt <='0 ';

udgangen, hvis;

udgangen, hvis;

ende proces;udgangen opfører;--

- __ __ __ __ __ __ __ __ __ __ __

- CLK _ / \ ___ / \ ___ / \ ___ / \ ___ / \ ___ / \ ___ / \ ___ / \ ___ / \ ___ / \ ___ / \ __

- _______________________________________________________________________

- RST_N _____/

- ______

- LD_DATA_____________ / \ ________________________________________________________

--

- _____________________________________________________________________________

- DATA_IN___________AA___________________AA________________AA____________AA___________

--

- ______________________________________________________

- Optaget _______________/ \ ______

- ______________________ ______ ______ ______ ______ ______ ______ ____________

- COUNT_i___________0__________X__1___X__2___X__3___X__4___X__5___X__6___X__7_____7___

--

- ______________________ ______ ______ ______ ______ ______ ______ ______ _____

- COUNT ___________0__________X__0___X__1___X__1___X__2___X__2___X__3___X__3___X_4___

--

 
Det ser ud som det gør på den hårde måde.
Jeg ved ikke, VHDL, men i Verilog Jeg vil prøve noget som dette (input er en 8-bit signal i stedet for en streng):
Code:

modul top (x, dem);

input [7:0] x;

output [3:0] dem;tildele dem = x [7] x [6] x [5] x [4] x [3] x [2] x [1] x [0];

endmodule
 

Welcome to EDABoard.com

Sponsor

Back
Top