8 bit Sinkronisasi Sinkronisasi counter dengan membagi diprogram?

A

alphi

Guest
proyek saya memerlukan 8 bit Sinkronisasi Sinkronisasi counter dengan membagi diprogram.ketika KPT = 00, 1 CLK naik, kontra 1ketika KPT = 01, 2 CLK naik, kontra 1ketika KPT = 10, 4 CLK naik, kontra 1ketika KPT = 11, 8 CLK naik, kontra 1
Catatan: saya tidak dapat menggunakan frekuensi CLK untuk membagi rangkaian multiplekser rangkaian untuk menghasilkan membagi clk2, kemudian gunakan untuk 8bit Sinkronisasi clk2 ini akan menghasilkan counter.because besar waktu tunda counter betwwen output dengan proyek CLK.my T1 (counter output)-T2 ( CLK) <8ns, jadi saya menggunakan metode berikut ini VHDL.but mengkonsumsi sumber daya sangat besar saya XC9536XL-10.Mengapa mengkonsumsi sumber daya begitu besar? Bagaimana bisa saya untuk memperbaikinya.VHDL saya:

ASS entitas adalah
port (
CLK: di std_logic;
J: keluar std_logic_vector (7 downto 0);
KPT: di std_logic_vector (1 downto 0);
nRST: di std_logic --
)
ASS akhir;

Behavioral arsitektur dari ASS adalah
sinyal A_SIG: std_logic_vector (10 downto 0); --
mulai
Acount: blok
mulai
A <= A_SIG (10 downto 3);
proses (CLK, nRST)
mulai
jika nRST = '1 'lalu --
jika CLK = '1 'dan kemudian CLK'event
KPT kasus adalah
ketika "00" =>
A_SIG (10 downto 3) <= A_SIG (10 downto 3) 1;
ketika "01" =>
A_SIG (10 downto 2) <= A_SIG (10 downto 2) 1;
ketika "10" =>
A_SIG (10 downto 1) <= A_SIG (10 downto 1) 1;
ketika "11" =>
A_SIG (10 downto 0) <= A_SIG (10 downto 0) 1;
ketika orang lain =>
null;
kasus akhir;
end if;
lain
A_SIG <= "00000000000";
end if;
proses akhir;
Acount blok akhir;
end Behavioral;HDL Synthesis ReportMakro Statistik
# Penambah / Subtractors: 4
11-bit adder: 1
10-bit adder: 1
9-bit adder: 1
8-bit adder: 1
# Registers: 11
1-bit register: 11
# Multiplexer: 10
2-to-1 multiplexer: 1
1-bit 4-to-1 multiplexer: 9

 
Aku tidak bisa memahami dengan jelas kalimat dan keprihatinan Anda mengenai "menghasilkan waktu tunda yang besar".

Aku tidak tahu VHDL sangat baik, tetapi kode Anda tampaknya canggung.Mungkin contoh Verilog ini akan membantu Anda:
Kode:

modul atas (CLK, A, KPT, nRST);

masukan CLK, nRST;

input [1:0] KPT;

reg [10:0] count;

output [7:0] A;assign A = count>> 3;selalu @ (posedge CLK atau negedge nRST) mulai

if (nRST == 0)

count <= 0;

lain

count <= count (8>> KPT);

akhir

endmodule
 
Check this out!!

Kode:

ASS entitas adalah

port (

CLK: di std_logic;

J: keluar std_logic_vector (7 downto 0);

KPT: di std_logic_vector (1 downto 0);

nRST: di std_logic --

)

ASS akhir;Behavioral arsitektur dari ASS adalah

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

variabel tmp: std_logic_vector (10 downto 0);

mulai

Acount: blok

mulai

A <= A_SIG (10 downto 3);

proses (CLK, nRST)

mulai

jika nRST = '0 'lalu

A_SIG <= "00000000000"; --

elsif CLK = '1 'dan kemudian CLK'event

KPT kasus adalah

ketika "00" => tmp: = 8;

ketika "01" => tmp: = 4;

ketika "10" => tmp: = 2;

ketika "11" => tmp: = 1;

ketika orang lain => null;

kasus akhir;

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

end if;

proses akhir;

Acount blok akhir;

end Behavioral;

 

Welcome to EDABoard.com

Sponsor

Back
Top