CPLD doesnt show benar BCD counter oleh Verilog

M

MRFGUY

Guest
Aku hanya mencoba untuk merancang bcd counter (00-66) dengan menggunakan Verilog.Aku menulis kode Verilog di bangku Xilinx dan menguji gelombang menunjukkan dengan benar.Lalu aku mencoba untuk mendownload ke xc9572 cpld.Setelah men-download, ketika saya mencoba untuk menguji itu mulai menghitung 00-66 pada pertama kalinya.Kemudian kembali 08 (bukannya kembali ke 00) dan kemudian meja menunjukkan hanya 08-66.Dari 00-07 adalah hanya menghilang setelah 1 loop.

di sini adalah program saya:

modul berisi (vc, ttl, qx, qy);
masukan vc, ttl;
output [3:0] qx, qy;

kawat a, b, c, d, a1, b1, c1, d1;
kawat reseta, resetc;

assign resetc = ((a & b & c) & (b1 & c1));
assign reseta = ((b & d) | ((a & b & c) & (b1 & c1)));

ls7493 x1 (vc, ttl, reseta, reseta, a, b, c, d);
ls7493 x2 (vc, d, resetc, resetc, a1, b1, c1, d1);

menetapkan qx = (d, c, b, a);
menetapkan qy = (d1, c1, b1, a1);
endmodule
---------
modul ls7493 (VCC, AA, reset0, reset1, QA, QB, QC, QD);

masukan AA, reset0, reset1, VCC;
output QA, QB, QC, QD;
kawat QA, QB, QC, QD;

reg ulang;
selalu @ (reset0 atau reset1)
mulai
reset = reset0 & reset1;
akhir
Jika A (VCC, reset, AA, QA);
Jika B (VCC, reset, QA, QB);
Jika C (VCC, reset, QB, QC);
Jika D (VCC, reset, QC, QD);

endmodule
-------
modul dst (t, terlebih dulu, in_t, output_t);

masukan t, terlebih dulu, in_t;
output output_t;

reg output_t;

output_t awal = 1;
selalu @ (negedge in_t atau posedge terlebih dulu)
mulai
if (terlebih dulu == 1)
output_t <= 0;
else if (t == 0)
output_t <= in_t;
lain
output_t <= ~ output_t;
akhir

endmodule

 
Alih-alih menggunakan asynchronous menakutkan semua counter dan me-reset, Anda harus mendesain ulang hanya menggunakan sinkron counter.

Berikut ini adalah dua digit BCD sinkron counter yang menghitung 00-66 lalu kembali ke 00:
Kode:

modul atas (CLK, bcd);

masukan CLK;

output reg [7:0] bcd = 0;selalu @ (posedge CLK)

bcd <= bcd == 8'h66?
0: bcd [3:0] == 9?
bcd 7: bcd 1;

endmodule
 
Hai,
Saya setuju dengan echo47; ur masalah asynch riak reset dan counter.
Masalah dengan rangkaian ur async reset lebar pulsa yang tidak
cukup untuk me-reset qxx [3] flip-flop.qxx [3] mendapat CLK sebagai qxx [2] mendapat ulang dari
1 -> 0 itu mengabaikan reset dan mendapatkan set!Sehingga hasilnya ur mendapatkan!
Semoga ini bisa membantu Anda memahami pelaksanaan ur lebih baik!

 
Ya, saya setuju dengan echo47 juga.Menggambarkan Behavor sederhana dapat sysnthesisable desain Anda.

 

Welcome to EDABoard.com

Sponsor

Back
Top