Outline
Simple wire
本題要連接電路的 input 與 output,用 assign
定義 output。
module top_module( input in, output out );
assign out = in;
endmodule
Four wires
根據圖片連接 3 輸入 4 輸出,一樣用 assign
定義 output。
module top_module(
input a,b,c,
output w,x,y,z );
assign w = a;
assign x = b;
assign y = b;
assign z = c;
endmodule
也可以用 vector 型式。
module top_module(
input a,b,c,
output w,x,y,z );
assign {w,x,y,z} = {a,b,b,c};
endmodule
Inverter
這題用了 NOT 邏輯閘,直接以 ~
表示即可。
module top_module( input in, output out );
assign out = ~in;
endmodule
AND gate
換成 AND 邏輯閘,以 &
表示。
module top_module(
input a,
input b,
output out );
assign out = a&b;
endmodule
NOR gate
NOR 邏輯閘,用 OR |
跟 NOT ~
結合。
module top_module(
input a,
input b,
output out );
assign out = ~(a|b);
endmodule
XNOR gate
XNOR 邏輯閘,用 XOR ^
跟 NOT ~
結合。
module top_module(
input a,
input b,
output out );
assign out = ~(a^b);
endmodule
Declaring wires
題目要求用 wire
去連接輸入輸出和邏輯閘,類似程式語言函數裡的變數 ; 注意用 wire
時必須用 assign
定義。
- 下列程式碼的
`default_nettype none
是不讓未宣告的類型預設為wire
,因此本題不用assign
會出錯。 - out_n 定義為
~(w1|w2)
也可以直接用~out
,或是如圖所示再建一個wire
。
`default_nettype none
module top_module(
input a,
input b,
input c,
input d,
output out,
output out_n );
wire w1; wire w2;
assign w1 = a&b;
assign w2 = c&d;
assign out = (w1|w2);
//assign out_n = ~out; //pass
assign out_n = ~(w1|w2);
endmodule
7458 chip
7458 晶片的功能實踐,按照題目給的圖片定義即可。這裡我偷懶不想定義 wire
。
module top_module (
input p1a, p1b, p1c, p1d, p1e, p1f,
output p1y,
input p2a, p2b, p2c, p2d,
output p2y );
assign p1y = (p1a&p1b&p1c) | (p1d&p1e&p1f);
assign p2y = (p2a&p2b) | (p2c&p2d);
endmodule