Professional Documents
Culture Documents
FPGA Exp
FPGA Exp
「設計程序」
1. 編輯電路設計檔案:使用 MAX+plus II 內建圖形編輯器編輯邏輯電路檔案, 並
使用 File→Save As 存至適當的硬碟目錄,注意目錄不可用中文或為根目錄。請
注意取檔名必須與 Verilog HDL 中的 Top Cell 同名,且附檔名取 *.v。
2. 設定目前編輯的電路檔為專案:File→Project→Set Project to Current File。
3. 指定設計元件:選取 Assign→Device,出現對話框時,選定欲使用的 IC 編號為
FLEX8000 系列之 EPF8282ALC84-2。
4. 存檔並檢查:選取 File→Project→Save&Check。
5. 除錯:觀察「MAX+plus II - Complier」視窗有無錯誤訊息出現。
6. 存 檔 並 編 譯 : 選 取 File → Project → Save&Compile , 此 步 驟 將 產 生 燒 錄 檔
filename.pof。
7. 指定腳位對應:Assign→Pin/Location/Chip
修改腳位編號
腳位名稱如無打錯將出
現正確輸入或輸出屬性
按 Add 會出現 刪除
1
Edited by Chu Yu
8. 再做一次存檔及編譯:選取 File→Project→Save&Compile。
9. 電路驗證:根據電路特性使用波形模擬檢視其電路正確性。
10. IC 燒錄:選取 Programmer,出現對話框再選 Configure 即可。如第一次使用
需進行燒錄 FPGA 的驅動程式設定程序。
燒錄正確將出現此視窗
z 燒錄 FPGA 的驅動程式設定程序(此步驟只需做一次即可)
¾ Windows XP 系統設定
控制台→新增硬體(;是) →新增硬體裝置→;安裝我從清單中…
→音效,視訊及遊戲控制器→從磁片安裝
→瀏覽(c:/maxplus2/drivers/win2000)→確定→繼續安裝→Altera ByteBlaster
→下一步→繼續安裝→下一步→完成→重新開機
¾ Maxplus2 的硬體設定
選取 Programmer→Hardware Setup
2
Edited by Chu Yu
「波型模擬」
1. 進入波形編輯視窗:選取 MAX+plus II→Waveform Editor。
4. 編輯輸入信號的邏輯值:先選定欲編輯的輸入腳位信號線,在欲編輯的區間用
滑鼠 mark 使其區間成為黑色,再用按滑鼠右鍵選定 Insert→High 或 Low,或
者使用主視窗的最左邊中選用 直接做 0→1 或 1→0 編輯。
3
Edited by Chu Yu
實驗板接腳對應圖
S1 S2 DIP1 DIP2
1 LED1 13 LED1 23 DIP1 35 DIP1
2 LED2 15 LED2 24 DIP2 36 DIP2
3 LED3 16 LED3 25 DIP3 37 DIP3
4 LED4 18 LED4 27 DIP4 39 DIP4
6 LED5 19 LED5 28 DIP5 40 DIP5
7 LED6 20 LED6 29 DIP6 41 DIP6
8 LED7 21 LED7 30 DIP7 42 DIP7
9 LED8 22 LED8 34 DIP8 43 DIP8
SW EXT
46 SW1 72 EXT 1
48 SW2 76 EXT 2
49 SW3 77 EXT 3
50 SW4 78 EXT 4
51 SW5 79 EXT 5
55 SW6 81 EXT 6
56 SW7 82 EXT 7
57 SW8 83 EXT 8
84 EXT 9
31 EXT 10
4
Edited by Chu Yu
實驗一:四對一多工器電路
實驗二:複合邏輯電路(二位元比較器)
實驗三:偶同位元產生器
5
Edited by Chu Yu
實驗四:四位元加法器
a[3..0] s[3..0]
四位元
b[3..0] 加法器 c
實驗五:多項式計算電路
設計一個可實現 x2 + 3x + 1 的電路,其中 x 為兩位元輸入。
腳位指定:x0→pin34, x1→pin30
p0→pin1, p1→pin2, p2→pin3, p3→pin4, p4→pin6
實驗六:D 型與 T 型正反器
6
Edited by Chu Yu
實驗七:具載入四位元計數器
Page 6-23
實驗八:四位元移位暫存器
腳位指定:clr→pin57, clk→pin50
q0→pin1, q1→pin2, q2→pin3, q3→pin4
實驗九:特定位元字串辨識電路
設計一個可從序列輸入位元串中找到 001 並輸出 1 的電路。
7
Edited by Chu Yu
實驗十:紅綠燈時控電路
實驗十二: 廣告燈電路
腳位指定:rst→pin50
q0→pin1, q1→pin2, q2→pin3, q3→pin4
q4→pin6, q5→pin7, q6→pin8, q7→pin9
8
Edited by Chu Yu
// Traffic.V, Traffic Light Controller (Main)
`include "Cnt16.V" //引用 Cnt16.V, 4 位元計數器 (Traffic Light Controller, Counter)
`include "Tra_Cntl.V" //引用 Tra_Cntl.V, 紅綠燈控制器的狀態控制電路
endmodule
----------------------------------------------------------------------------------------------------------
module disp(dig, num, col, enable, blank, clk, rst);
output [7:0] num;
output [3:0] col;
output [1:0] dig;
input blank, enable, clk, rst;
assign clk1=cnt[18];
assign in0=cnt1[3:0];
assign in1=cnt1[7:4];
assign in2=cnt1[11:8];
assign in3=cnt1[15:12];
assign in=(dig==0)?in0:
(dig==1)?in1:
(dig==2)?in2:
in3;
assign col=({bk,dig}==3'b000)?4'b1110:
({bk,dig}==3'b001)?4'b1101:
({bk,dig}==3'b010)?4'b1011:
({bk,dig}==3'b011)?4'b0111:
4'b1111;
assign bk=blank|(cnt[0]&~cnt[1]); //(cnt[0]&~cnt[1]) cancels some ghost images
assign clkn=cnt[1];
always @(posedge clkn or negedge rst)
begin
if (rst==0) dig=2'b11;
else dig=dig+1;
end
12
Edited by Chu Yu
----------------------------------------------------------------------------------------------------------
module led(q, clk, rst);
output [7:0] q;
input clk, rst;
reg [7:0] q;
reg [3:0] state;
reg [18:0] cnt;
wire clk1;
assign clk1=cnt[17];
always @(posedge clk1 or negedge rst)
begin
if (rst==0) begin state<=s0; q<=0; end
else case (state)
s0:begin q<=8'b1111_1110; state<=s1; end
s1:begin q<=8'b1111_1101; state<=s2; end
s2:begin q<=8'b1111_1011; state<=s3; end
s3:begin q<=8'b1111_0111; state<=s4; end
s4:begin q<=8'b1110_1111; state<=s5; end
s5:begin q<=8'b1101_1111; state<=s6; end
s6:begin q<=8'b1011_1111; state<=s7; end
s7:begin q<=8'b0111_1111; state<=s8; end
s8:begin q<=8'b1011_1111; state<=s9; end
s9:begin q<=8'b1101_1111; state<=sa; end
sa:begin q<=8'b1110_1111; state<=sb; end
sb:begin q<=8'b1111_0111; state<=sc; end
sc:begin q<=8'b1111_1011; state<=sd; end
sd:begin q<=8'b1111_1101; state<=s0; end
13