kasus pernyataan

B

bharat_in

Guest
Hingga sekarang, saya berada di bawah kesan bahwa pernyataan kasus akan menghasilkan non-prioritas encoder hardware baik dalam simulasi dan sintesis, tapi coding berikut menunjukkan bahwa dalam simulasi dalam karya-karya seperti proirity encoder ...

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Sedih" border="0" />modul m ();

kawat [3:0] W1 = 4'b1101;

awal
mulai
# 4;
kasus (1'b1)
W1 [0]: $ display ( "0");
W1 [1]: $ display ( "1");
W1 [2]: $ display ( "2");
W1 [3]: $ display ( "3");
default: $ display ( "default");
endcase
akhir

endmodule

Output:
0

Saya kira, dalam hal ini akan memiliki sintesis pra-dan pasca-sintesis ketidakcocokan simulasi.
Can anyone please menjelaskan, bagaimana untuk mendapatkan perangkat keras dalam simulasi paralel menggunakan pernyataan kasus?

 
awal akan diabaikan oleh alat sintesis dan menampilkan juga tidak synthesizble
mencoba untuk menulis kode rtl synthesizable

 
Yang saya tahu adalah bahwa dalam VHDL, kasus pernyataan adalah pernyataan berurutan bukan bersamaan, situasi ini untuk Verilog?

 
Ketika ur berbicara tentang sintesis kemudian # 4 dan $ display tidak boleh ada dalam ur RTL.
Setelah u telah diperbaiki ini, u telah harus menambahkan direktif parallel_case khusus untuk kondisi ini sebagai pernyataan kasus pilihan adalah variabel di sini.menulis seperti ini:

kasus (1'b1) / / sinopsis parallel_case
W1 [0]:
-----
-----

 
salin kode Anda di sini:
kasus (1'b1)
W1 [0]: $ display ( "0");
W1 [1]: $ display ( "1");
W1 [2]: $ display ( "2");

i think is ur kondisi kasus memiliki beberapa masalah.
u coba kasus pernyataan sebagai berikut:

kasus (W1) / / <- di sini harus W1, tidak 1'b1
W1 [0]: $ display ( "0");
W1 [1]: $ display ( "1");
W1 [2]: $ display ( "2");

 
bagi mereka yang meminta modul synthesizable ....

Kode:

modul m1 (W1, a, y);masukan kawat [3:0] W1;

masukan kawat [3:0] a;

output reg y;selalu @ *

mulai

kasus (1'b1)

W1 [0]: y = a [0];

W1 [1]: y = a [1];

W1 [2]: y = a [2];

W1 [3]: y = a [3];

default: y = 0;

endcase

akhirendmodule
 
U dapat menggunakan kendala untuk menghindari mismatch

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Senyum" border="0" />
 
@ shiv_emf
Tolong, katakan padaku apa kendala yang harus saya gunakan, dalam kasus ini?

 
Hi bharat_in,
Biarkan aku melihat masalah dari perspektif fwd lurus.
Satu output Y, bisa mendapatkan nilai dari salah satu dari 4 input a0, a1, a2, a3,
4 tergantung input lain w0, W1, w2, w3.OK?

ok mux 4to1, tapi Anda memiliki 4 baris untuk memilih (bukan 2, yang biasanya Anda), yaitu 16 masukan kombinasi untuk memutuskan pilihan untuk y 4 yaitu a0, a1, a2, a3?
4 pilihan aur 16 pilih kombinasi, bahut hai kamu beinsaafi

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Wink" border="0" />Jadi untuk memiliki sim tepat / syn cocok, Anda mungkin ingin kembali menulis pernyataan kasus Anda sebagai

Kode:kasus W1

4'b0001:

4'b0010:

4'b0011:

4'b0100:

.

.

4'b1110:

4'b1111:

default y = 0;

endcase

 
Ini adalah jalan!
Hope this helps!
Kode:

modul m1 (W1, a, y);

input [3:0] W1;

input [3:0] a;

output y;

assign y = (a [0] & w [0]) | (a [1] & w [1]) | (a [2] & w [2]) | (a [3] & w [3]) ;

endmodule
 

Welcome to EDABoard.com

Sponsor

Back
Top