<3-1a>.使用”資料流(Data Flow)的方式”,做出2 對 1的多功器 ,並且做訊號模擬。
a:輸入訊號。
b:輸入訊號。
s:選擇訊號。
y:輸出訊號。
按鍵設計圖:
(圖)
module mux21a( a, b, s, y);
input a,b,s;
output y;
wire y;
assign y = ~s & a | s & b;
endmodule
<3-1a>:
建立放專案的資料夾: (以後所有的專案,都會放在裡面)
1. 滑鼠連點兩次桌面上我的電腦。
2. 點開<D://>,再點滑鼠右鍵,新增一個資料夾。
3. 點滑鼠右鍵重新命名,命名為FPGA。
建立新專案:
4. 打開<ISE Project Navigator 13.4>。
5. 點選File -> New Project 。
6. Location的位置,輸入 “D:\FPGA”。
7. Name的位置,輸入”mux21a”。
8. 最後,滑鼠點擊Nxet。
(圖)
專案設定:
9. Family: 選擇Spartan 3E。
10.Device: 選擇XC3S500E 或是 XC3S1200E。
11.Speed: 選擇-4。
12.Package: 選擇FG320。
13.Preterred Language: 選擇Verilog。
14.最後,點擊Next。
(圖)
15.再次確認,專案設定是否有誤。
16.滑鼠點擊Finish。
加入程式檔:
17.在畫面左側視窗攔點擊滑鼠右鍵,在選擇”Add Copy of Source”。
18.選出”code_lab3_num1_1”資料夾內,兩個檔案”mux21a.v” 和 “mux21a_tb.v”,再點ok。
(圖)
邏輯合成(Synthesize):
19.連點兩下<Synthesize – XST>做邏輯合成,若是成功<Synthesize – XST>前面會出現綠色勾勾。
20.點開<Synthesize – XST>前面”+”做展開後,滑鼠左鍵連點兩次,在按OK。
(圖)
訊號模擬:
21.點選<Simulation>,再點開<mux21a_tb.v>。如下(圖)
(圖)
22.先點選<mux21a_tb.v>,再點開<ISim Simulator>,再點左鍵連點兩下<Simulate Behavioral Module>。
(圖)
23.連點兩下<Simulate Behavioral Module>完後,會跳出一個新視窗。
,就可以觀看完整的訊號圖。
(圖)
24.點擊 <Zoom to Full View>,
如圖
(圖)
24.若要放大圖,在訊號圖上,按住Ctrl且滑鼠滾輪向前滾動,反之,要縮小圖,按住Ctrl且滑鼠滾輪向後滾動。
(圖)
對照真值表:
訊號模擬(圖)
<3-1b>.使用”程序結構 (Proceduel constructs)的方式”,做出2 對 1的多功器 ,並且做訊號模擬。
a:輸入訊號。
b:輸入訊號。
s:選擇訊號。
y:輸出訊號。
按鍵設計圖:
(圖)
module mux21b( a, b, s, y);
input a,b,s;
output y;
reg y;
always @(a,b,s)
begin
if(s ==0)
y = a;
else
y = b;
end
endmodule
<3-1b>:
建立新專案:
1. 打開<ISE Project Navigator 13.4>。
2. 點選File -> New Project 。
3. Location的位置,輸入 “D:\FPGA”。
4. Name的位置,輸入”mux21b”。
5. 最後,滑鼠點擊Nxet。
(圖)
專案設定:
6. Family: 選擇Spartan 3E。
7. Device: 選擇XC3S500E 或是 XC3S1200E。
8. Speed: 選擇-4。
9. Package: 選擇FG320。
10.Preterred Language: 選擇Verilog。
11.最後,點擊Next。
(圖)
12.再次確認,專案設定是否有誤。
13.滑鼠點擊Finish。
加入程式檔:
14.點擊滑鼠右鍵,在選擇”Add Copy of Source”。
15.選出” code_lab3_num1_2”資料夾內,兩個檔案”mux21b.v” 和 “mux21b_tb.v”,再點ok。
(圖)
邏輯合成(Synthesize):
16.連點兩下<Synthesize – XST>做邏輯合成,若是成功<Synthesize – XST>前面會出現綠色勾勾。
17.點開<Synthesize – XST>前面”+”做展開後,滑鼠左鍵連點兩次,在按OK。
(圖)
訊號模擬:
18.點選<Simulation>,再點開<mux21b_tb.v>。如下(圖)
(圖)
19.先點選<mux21b_tb.v>,再點開<ISim Simulator>,再點左鍵連點兩下<Simulate Behavioral Module>。(圖)
(圖)
20.連點兩下<Simulate Behavioral Module>完後,會跳出一個新視窗。
(圖)
21.點擊 <Zoom to Full View>,如圖
,就可以觀看完整的訊號圖。
(圖)
訊號模擬(圖)
<3-2>.利用分層設計(Hierarchical Design),做出4 對 1的多功器 ,並且做訊號模擬。
c:輸入訊號。(4 bits)
s:選擇訊號。(2 bits)
z:輸出訊號。
按鍵設計圖:
(圖)
module mux21c( a, b, s, y);
input a,b,s;
output y;
reg y;
always @(*)
begin
if(s ==0)
y = a;
else
y = b;
end
endmodule
module mux41( c, s, z);
input [3:0] c;
input [1:0] s;
output z;
wire v,w,z;
mux21c M1( .a(c[0]),
.b(c[1]),
.s(s[0]),
.y(v));
mux21c M2( .a(c[2]),
.b(c[3]),
.s(s[0]),
.y(w) );
mux21c M3( .a(v),
.b(w),
.s(s[1]),
.y(z) );
endmodule
<3-2>:
建立新專案:
1. 打開<ISE Project Navigator 13.4>。
2. 點選File -> New Project 。
3. Location的位置,輸入 “D:\FPGA”。
4. Name的位置,輸入” mux41”。
5. 最後,滑鼠點擊Nxet。
(圖)
專案設定:
6. Family: 選擇Spartan 3E。
7. Device: 選擇XC3S500E 或是 XC3S1200E。
8. Speed: 選擇-4。
9. Package: 選擇FG320。
10.Preterred Language: 選擇Verilog。
11.最後,點擊Next。
(圖)
12.再次確認,專案設定是否有誤。
13.滑鼠點擊Finish。
加入程式檔:
14.點擊滑鼠右鍵,在選擇”Add Copy of Source”。
15.選出” code_lab3_num2”資料夾內,三個檔案”mux21c.v”, ”mux41.v”和 “mux41_tb.v”,再點ok。
(圖)
邏輯合成(Synthesize):
16.連點兩下<Synthesize – XST>做邏輯合成,若是成功<Synthesize – XST>前面會出現綠色勾勾。
點開<Synthesize – XST>前面”+”做展開後,滑鼠左鍵連點兩次,在按OK。
(圖)
訊號模擬:
18.點選<Simulation>,再點開<mux21b_tb.v>。如下(圖)
(圖)
19.先點選<mux21b_tb.v>,再點開<ISim Simulator>,再點左鍵連點兩下<Simulate Behavioral Module>。(圖)
(圖)
20.連點兩下<Simulate Behavioral Module>完後,會跳出一個新視窗。
(圖)
21.點擊 <Zoom to Full View>,如圖
,就可以觀看完整的訊號圖。
(圖)
訊號模擬(圖)
<3-3>.做出一個七節燈解碼器,顯示出1~9的數字,並且做出訊號模擬。
x:輸入訊號。(4 bits)
a_to_g:輸出訊號。(8 bits)
按鍵設計圖:
(圖)
module hex7seg( x, a_to_g);
input wire [3:0] x;
output reg [7:0] a_to_g;
always @(*)
case(x)
4'h0: a_to_g = 7'b0000001;
4'h1: a_to_g = 7'b1001111;
4'h2: a_to_g = 7'b0010010;
4'h3: a_to_g = 7'b0000110;
4'h4: a_to_g = 7'b1001100;
4'h5: a_to_g = 7'b0100100;
4'h6: a_to_g = 7'b0100000;
4'h7: a_to_g = 7'b0001111;
4'h8: a_to_g = 7'b0000000;
4'h9: a_to_g = 7'b0000100;
//4'hA: a_to_g = 7'b0001000;
//4'hb: a_to_g = 7'b0;
//4'hC: a_to_g = 7'b0;
//4'hd: a_to_g = 7'b1;
//4'hE: a_to_g = 7'b0;
//4'hF: a_to_g = 7'b0;
default: a_to_g = 7'b0000001;
endcase
endmodule
建立新專案:
1. 打開<ISE Project Navigator 13.4>。
2. 點選File -> New Project 。
3. Location的位置,輸入 “D:\FPGA”。
4. Name的位置,輸入” hex7seg”。
5. 最後,滑鼠點擊Nxet。
(圖)
專案設定:
6. Family: 選擇Spartan 3E。
7. Device: 選擇XC3S500E 或是 XC3S1200E。
8. Speed: 選擇-4。
9. Package: 選擇FG320。
10.Preterred Language: 選擇Verilog。
11.最後,點擊Next。
(圖)
12.再次確認,專案設定是否有誤。
13.滑鼠點擊Finish。
加入程式檔:
14.點擊滑鼠右鍵,在選擇”Add Copy of Source”。
15.選出” code_lab3_num”資料夾內,兩個檔案”hex7seg.v”和 “hex7seg _tb.v”,再點ok。
(圖)
邏輯合成(Synthesize):
16.連點兩下<Synthesize – XST>做邏輯合成,若是成功<Synthesize – XST>前面會出現綠色勾勾。
17.點開<Synthesize – XST>前面”+”做展開後,滑鼠左鍵連點兩次,在按OK。
(圖)
訊號模擬:
18.點選<Simulation>,再點開<hex7seg_tb.v>。如下(圖)
(圖)
19.先點選<mux21b_tb.v>,再點開<ISim Simulator>,再點左鍵連點兩下<Simulate Behavioral Module>。(圖)
(圖)
20.連點兩下<Simulate Behavioral Module>完後,會跳出一個新視窗。
21.點擊 <Zoom to Full View>,如圖
,就可以觀看完整的訊號圖。
(圖)
22. 滑鼠點左鍵,選擇Radix,在選擇Hexadecimal(十六進制表示)。
(圖)
訊號模擬(圖)
(1)Please download the Verilog code (sw7led.v) and modify it so that the decoder can show ( A, b, C, d, E, F) on the 7-segment display.
(2)Please edit your .ucf file (sw7led.ucf) such that the 4 input signals, x[3:0] are attached to your switches. (SW0, SW1, SW2 and SW3)