Tải bản đầy đủ - 0 (trang)
Chương 3. Triển khai mạch trên FPGA

Chương 3. Triển khai mạch trên FPGA

Tải bản đầy đủ - 0trang

-



1 switch (SW[0])



3.2 Thiết kế khối chia tần số

Vì tần số 50MHz của kit rất nhanh nên không thể quan sát sự thay đổi tín hiệu

và dữ liệu trên mạch, nhóm em thiết kế khối chia tần số để tạo ra xung clock chu kì 0.1

giây. Nhóm em sử dụng một tín hiệu t để tạo xung clock chu kì 0.1s, 1 biến số nguyên

count để đếm tăng khi có sườn lên xung clock 50 MHz, mỗi khi count đếm đến

2500000 thì đảo t.

always @(posedge clk_50MHz)

begin

count=count+1;

if(count==2500000)

begin

t=~t;

count=1;

end

end



31



3.3 Thiết kế bộ giải mã cho các LED 7 thanh

Bộ này có nhiệm vụ giải mã 4 bit đầu vào 1 LED để hiển thị 4 bit đó dưới dạng

hexa. Ở đây nhóm em sử dụng bộ MUX 16-1 với 4 bit chọn, trong Verilog dùng lệnh

case trong khối always.

always @*

case(x)

4'h0: d=7'b1000000;

4'h1: d=7'b1111001;

4'h2: d=7'b0100100;

4'h3: d=7'b0110000;

4'h4: d=7'b0011001;

4'h5: d=7'b0010010;

4'h6: d=7'b0000010;

4'h7: d=7'b1111000;

4'h8: d=7'b0000000;

4'h9: d=7'b0010000;

4'ha: d=7'b0100000;

4'hb: d=7'b0000011;

4'hc: d=7'b1000110;

4'hd: d=7'b0100001;

4'he: d=7'b0000110;

default: d=7'b0001110;

endcase



3.4 Thiết kế file chạy trên kit

Vì tài nguyên trên kit có hạn nên nhóm em chỉ có thể hiển thị một số tín hiệu

lên kit (thể hiện trong bảng 3.1).

Bảng 3.1 Danh sách tín hiệu hiển thị trên kit DE2



32



Phần sử dụng trên DE2

HEX7

HEX6

HEX5

HEX4

HEX3, HEX2

HEX1, HEX0

LEDR[17]

LEDR[16]

LEDR[15]

LEDR[14]

LEDR[13]

LEDR[12]

LEDR[11]

LEDR[10]

LEDR[9]

LEDR[8]

LEDR[7]

LEDR[6]

LEDR[5:3]

LEDR[2:1]

LEDR[0]

LEDG



Nội dung hiển thị

4 bit ngoài cùng bên phải của R0_out (dưới dạng hexa)

4 bit ngoài cùng bên phải của R1_out (dưới dạng hexa)

4 bit ngoài cùng bên phải của R2_out (dưới dạng hexa)

4 bit ngoài cùng bên phải của R3_out (dưới dạng hexa)

8 bit PC_count (dưới dạng hexa)

8 bit address (dưới dạng hexa)

Tín hiệu Load_R0

Tín hiệu Load_R1

Tín hiệu Load_R2

Tín hiệu Load_R3

Tín hiệu Load_PC

Tín hiệu Inc_PC

Tín hiệu Load_IR

Tín hiệu Load_Add_R

Tín hiệu Load_Reg_Y

Tín hiệu Load_Reg_Z

Tín hiệu cờ zero

Tín hiệu write

3 bit Sel_Bus_1_Mux

2 bit Sel_Bus_2_Mux

Tín hiệu reset (sáng nếu reset mạch)

8 bit instruction



Việc gán các tín hiệu vào các phần hiển thị tương ứng nhóm em thực hiện

trong module RISC_SPM.

assign ledr[17]=Load_R0;

assign ledr[16]=Load_R1;

led7_seg l7 (R0_out[3:0],hex7);

33



led7_seg l6 (R1_out[3:0],hex6);

led7_seg l5 (R2_out[3:0],hex5);

led7_seg l4 (R3_out[3:0],hex4);

led7_seg l3 (PC_count[7:4],hex3);

led7_seg l2 (PC_count[3:0],hex2);

led7_seg l1 (address[7:4],hex1);

led7_seg l0 (address[3:0],hex0);

assign ledr[15]=Load_R2;

assign ledr[14]=Load_R3;

assign ledr[13]=Load_PC;

assign ledr[12]=Inc_PC;

assign ledr[11]=Load_IR;

assign ledr[10]=Load_Add_R;

assign ledr[9]=Load_Reg_Y;

assign ledr[8]=Load_Reg_Z;

assign ledr[7]=zero;

assign ledr[6]=write;

assign ledr[5:3]=Sel_Bus_1_Mux;

assign ledr[2:1]=Sel_Bus_2_Mux;

assign ledr[0]=~rst;

assign ledg=instruction;

Module chạy trên kit này ghép từ khối chia tần số và khối RISC_SPM.

clk_divider_1s c (.clk_50MHz(CLOCK_50),.clk_1s(clk1));

RISC_SPM M2

(clk1,SW[0],HEX7,HEX6,HEX5,HEX4,HEX3,HEX2,HEX1,HEX0,LEDR,LEDG);



34



3.5 Kết quả chạy trên kit



Hình 3.2 Kết quả chạy trên kit DE2



Hình 3.2 là kết quả mạch chạy trên kit DE2. Đối chiếu kết quả mô phỏng và

kết quả trên kit nhóm em thấy 2 kết quả giống nhau, như vậy mạch đã hoạt động đúng.



35



KẾT LUẬN

Nhóm em đã thực hiện thành cơng việc thiết kế, mô phỏng và triển khai trên

kit DE2 của máy chương trình được lưu trữ máy tính với tập lệnh đơn giản (RISC

SPM). Đây là một bài tập tương đối phức tạp, đòi hỏi nhiều thời gian, cơng sức để

nghiên cứu thực hiện. Qua bài tập lớn nay đã giúp nhóm em hiểu sâu hơn về code

Verilog, thiết kế mạch kiểu FSMD và sử dụng kit để triển khai mạch. Nhóm em một

lần nữa cảm ơn thầy Võ Lê Cường cùng các bạn trong lab AICS đã hướng dẫn chỉ dạy

trên lớp giúp chúng em hoàn thành bài tập lớn này.



36



TÀI LIỆU THAM KHẢO

[1] Michael D. Ciletti, Advanced Digital Design with the Verilog HDL, Prentice-Hall

Inc, 2003

[2] Pong P. Chu, FPGA Protyping by Verilog examples, John Wiley & Sons Inc, 2008

[3] Intel, Cyclone II Device Handbook, altera.com, 2008

[4] Internet



37



PHỤ LỤC

Toàn bộ code của bài tập lớn này nằm ở link sau:

https://drive.google.com/file/d/1Q3Q6hpWLW_CFKf0NDK4nyrSJbjduJBi/view?usp=sharing



38



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Chương 3. Triển khai mạch trên FPGA

Tải bản đầy đủ ngay(0 tr)

×