8 bit sinhro counter with programirati sinhronizacija razkorak?

A

alphi

Guest
moj projekt potrebujejo 8 sinhro bit counter with programirati sinhronizacija razkorak.ko OPT = 00, 1 CLK narašča, števec 1ko OPT = 01, 2 CLK narašča, števec 1ko OPT = 10, 4 CLK narašča, števec 1ko OPT = 11, 8 CLK narašča, števec 1
note: i ne morejo uporabljati CLK za razdelitev frekvenc vezje multipleksor vezje za ustvarjanje deli clk2, nato pa uporabite clk2 za 8bit sinhro counter.because te bo pripeljalo do velikega časovnega zamika betwwen counter izhod s projektom CLK.my T1 (counter output)-T2 ( CLK) <8ns, zato sem uporabo po metodi VHDL.but ga porabi zelo velik vir mojega XC9536XL-10.Zakaj je tako veliko sredstev porabijo? Kako lahko jaz za njegovo izboljšanje.moj VHDL:

Podjetje je ASS
pristanišča (
CLK: v std_logic;
: Od std_logic_vector (7 downto 0);
OPT: v std_logic_vector (1 downto 0);
nRST: v std_logic --
);
end ASS;

architecture Behavioral of ASS je
signal A_SIG: std_logic_vector (10 downto 0); --
začeti
Kakršnih: blok
začeti
<= A_SIG (10 downto 3);
proces (CLK, nRST)
začeti
če nRST = '1 'potem --
če CLK = "1" in nato CLK'event
OPT primeru je
ko "00" =>
A_SIG (10 downto 3) <= A_SIG (10 downto 3) 1;
ko "01" =>
A_SIG (10 downto 2) <= A_SIG (10 downto 2) 1;
ko "10" =>
A_SIG (10 downto 1) <= A_SIG (10 downto 1) 1;
ko "11" =>
A_SIG (10 downto 0) <= A_SIG (10 downto 0) 1;
ko drugi =>
null;
konec postopka;
end if;
še
A_SIG <= "00000000000";
end if;
koncu postopka;
end blok kakršnih;
end Behavioral;HDL Synthesis ReportMakro Statistika
# Seštevalniki / Subtractors: 4
11-bitni seštevalnik: 1
10-bitni seštevalnik: 1
9-bitni seštevalnik: 1
8-bitni seštevalnik: 1
# Registers: 11
1-bit register: 11
# Multiplexers: 10
2-v-1 multipleksor: 1
1-bit 4-v-1 multipleksor: 9

 
Ne morem jasno razumeti vašo obsodbo in zaskrbljenost glede "ustvariti velik časovni zamik".

Ne vem, VHDL zelo dobro, ampak vaša koda se zdi čudno.Morda bo ta primer Verilog vam pomaga:
Code:

modul top (CLK,, OPT, nRST);

input CLK, nRST;

input [1:0] OPT;

reg [10:0] count;

izhod [7:0];dodeliti count =>> 3;Vedno @ (posedge CLK ali negedge nRST) se začne

if (nRST == 0)

count <= 0;

še

count <= count (8>> OPT);

konec

endmodule
 
Pazi to!

Code:

Podjetje je ASS

pristanišča (

CLK: v std_logic;

: Od std_logic_vector (7 downto 0);

OPT: v std_logic_vector (1 downto 0);

nRST: v std_logic --

);

end ASS;architecture Behavioral of ASS je

signal A_SIG: std_logic_vector (10 downto 0); --

spremenljivka tmp: std_logic_vector (10 downto 0);

začeti

Kakršnih: blok

začeti

<= A_SIG (10 downto 3);

proces (CLK, nRST)

začeti

če nRST = '0 'then

A_SIG <= "00000000000"; --

elsif CLK = "1" in nato CLK'event

OPT primeru je

ko "00" => tmp: = 8;

ko "01" => tmp: = 4;

ko "10" => tmp: = 2;

ko "11" => tmp: = 1;

ko drugi => null;

konec postopka;

A_SIG (10 downto 0) <= A_SIG (10 downto 0) tmp;

end if;

koncu postopka;

end blok kakršnih;

end Behavioral;

 

Welcome to EDABoard.com

Sponsor

Back
Top