BÁO CÁO THỰC HÀNH THIẾT KẾ HỆ THỐNG SỐ KC102 Bài 1: Giới thiệu BOARD ALTERA DE2115, Phần mềm QUARTUS II và MODELSIM Code mô phỏng: module BAI1( output Y, input X); assign Y=X; endmodule module BAI1_test( output wire 0:0LEDR, input wire 0:0SW); BAI1 DUT( .Y (LEDR0), .X(SW0)); endmodule Tiến hành biên dịch và gán chân cho hệ thống. Vào Processing Start compilation, đợi quá trình biên dịch kết thúc và báo thành công. Sau đó vào Assignment Pin Planner Chúng ta chọn SW0 làm ngõ vào và LEDR0 để hiển thị: Kết quả: Bật SW0 thì LEDR0 sáng. BÀI 2: MẠCH TỔ HỢP I. Cổng AND Bảng trạng thái cổng AND A B Y=A.B 0 0 0 0 1 0 1 0 0 1 1 1 Code mô phổng: module BAI2A ( output wire Y, input wire A, input wire B); assign Y=AB; endmodule module BAI2A_test( output wire 1:0LEDR, output wire 0:0LEDG, input wire 1:0SW); assign LEDR1:0 = SW1:0; BAI2A DUT(
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CẦN THƠ
Giảng viên hướng dẫn: NGUYỄN CAO QUÍ
Sinh viên thực hiện:
Trang 2BÁO CÁO THỰC HÀNH THIẾT KẾ HỆ
-Tiến hành biên dịch và gán chân cho hệ thống Vào Processing Start
compilation, đợi quá trình biên dịch kết thúc và báo thành công Sau đó
vào Assignment Pin Planner
-Chúng ta chọn SW0 làm ngõ vào và LEDR0 để hiển thị:
Trang 3Kết quả: Bật SW0 thì LEDR0 sáng.
3
Trang 4output wire [1:0]LEDR,
output wire [0:0]LEDG,
input wire [1:0]SW);
assign LEDR[1:0] = SW[1:0];
Trang 5.A(SW[0]),
.B(SW[1]));
endmodule
-Tiến hành biên dịch và gán chân cho hệ thống Vào Processing Start
compilation, đợi quá trình biên dịch kết thúc và báo thành công Sau đó
vào Assignment Pin Planner
Ở đây chúng ta chọn SW0 SW1 làm 2 ngõ vào, LEDR0 và LEDR1 hiển thị , Output LEDG0:
Xem thiết kế BAI2A_test ở mức thanh ghi- vận chuyển bằng cách vào
Tools Netlist Viewers RTL Viewer.
5
Trang 6Kết quả: Bật SW0 và SW1 , LEDR0 VÀ LEDR1 sáng, Output LEDG8
sáng Cổng AND thực hiện những trạng thái đúng với bảng trạng thái ban đầu mà thiết kế mong muốn có được
Trang 8Tiến hành biên dịch và gán chân cho hệ thống Vào Processing Start
compilation, đợi quá trình biên dịch kết thúc và báo thành công Sau đó
vào Assignment Pin Planner
-Ở đây chúng ta chọn SW0 SW1 làm ngõ vào, LEDR0 LEDR1 hiển thị, LEDG0 làm ngõ ra
Xem thiết kế BAI2B_test ở mức thanh ghi- vận chuyển bằng cách vào
Tools Netlist Viewers RTL Viewer.
Trang 9Kết quả: Mạch được thiết kế hoạt động với các trạng thái đúng với trạng thái của cổng OR.
9
Trang 10III Mạch kiểm tra chẵn lẻ
Trang 11-Tiến hành biên dịch và gán chân cho hệ thống Vào Processing Start
compilation, đợi quá trình biên dịch kết thúc và báo thành công Sau đó
vào Assignment Pin Planner
-Ở đây ngõ vào là SW0,1; LEDR0,1,2,3 hiển thị ; LEDG0,1,2,3 là ngõ ra
Xem thiết kế BAI2B_test ở mức thanh ghi- vận chuyển bằng cách vào
Tools Netlist Viewers RTL Viewer.
11
Trang 13 BÀI 3 : MẠCH TỔ HỢP
3A : MẠCH CỘNG BÁN PHẦN
module BAI3A (
output wire SUM,
output wire CARRY,
Trang 14Người học sử dụng SW0 và SW1 để nhập 2 số hạng A và B Giá trị của
2 số hạng hiển thị trên 2 LED đơn màu đỏ LEDR0 và LEDR1 tương ứng Các LED đơn àu xanh LEDG1 và LEDG0 sáng tương ứng với giá trị bit bằng 1 và ngược lại tương ứng với giá trị bit 0
Trang 153B: Mạch cộng toàn phần :
module BAI3B(
output wire SUM,
output wire CARRY,
input wire A,
input wire B,
15
Trang 16input wire C);
wire HALF_SUM1, HALF_CARRY1, HALF_CARRY2;
BAI3 HA1 (HALF_SUM1, HALF_CARRY1,A,B);
BAI3A HA2(SUM, HALF_CARRY2, HALF_CARRY2 ;
Thực hiện : Người học sử dụng các SW2,SW1,và SW0 để nhập các giá
trị tương ứng A,B và C Tổng (Sum) và số tràn (Carry) của phép cộng toàn phần đươc hiển thị bởi LED đơn màu xanh lá LEDG1 và LEDG0
Trang 18Mã hóa ưu tiên 8 sang 3 đường:
Trang 1919
Trang 20ứng X7…X0 Các LED đơn màu đỏ LEDR7…LEDR0 hiển thị giá trị tương ứng của các ngõ X7…X0 ; các LED đơn màu xanh hiển thị giá trị tương ứng của các ngõ vào X7…X0 ; các LED đơn màu xanh
lá(LEDG2…LEDG0) hiển thị giá trị các ngõ ra tương ứng Y2…Y0
Trang 22Thực hiện: Người học sử dụng SW0 để nhập giá trị ngõ vào D; giá trị
được hiển thị bởi LED đơn màu đỏ LEDR0 Ngõ ra Q và Qbar được hiểnthị trên các LED đơn màu xanh tương ứng là LEDG1 và LEDG0 Các KEY1 và KEY0 sẽ có vai trò cấp xung clock (Clk) và tín hiệu xáo
(Reset)
Trang 2525
Trang 30endcase
end
assign Q = S_reg;
Trang 31Thực hiện: Các ngõ vào dữ liệu D0 đến D7 tương ứng với các SW0 đến
SW7 SW8 và SW9 được sử dụng nhập các giá trị điều khiển ctrl0 và ctrl1
KEY0 được sử dụng để reset trạng thái mạch, KEY1 làm nhiệm vụ cấp xung đồng hồ Trạng thái của các ngõ ra Q0 đến Q7 được hiển thị bởi các cấp xung đồng hồ Trạng thái của các ngõ ra Q0 đến Q7 được hiển thị bởi các cấp xung đồng hồ Trạng thái của các ngõ ra Q0 đến Q7 đượchiển thị bởi các LED đơn màu xanh lá tương ứng LEDG0 và LEDG7
31
Trang 36BÀI 5 MẠCH TUẦN TỰ (TIẾP THEO)
Mục đích:
Tiếp tục trang bị cho người học kiến thức và kỹ năng lập trình thiết kế mạch tuần tự qua việc thiết kế mạch đếm lên, đếm lên/xuống và đếm vòng
Tiếp tục phát triển kỹ năng lập trình, sử dụng phần mềm Modelsim và Quartus II, thành tạo các bước thiết trên board Altera DE2_15
Trang 3737
Trang 41.0: mạch đếm xuống
-KEY1 làm nhiệm vụ cấp xung clk cho mạch đếm và KEY0 để reset (xóa các giá trị ngõ ra Q3 đến Q0 về 0), trạng thái được hiển thị bởi các LED đơn vị xanh lá LEDG1 và LEDG0 tương ứng giá trị các ngõ ra Q3 đến Q0 được hiển thị bởi các LED đơn màu đỏ tương ứng từ LEDR3 đếnLEDR0
41
Trang 46BÀI 6 MẠCH TRẠNG THÁI HỮU HẠN
Reg [2:0] p_state, n_state; // present and next state, respectively
Always @ (X or p_state ) begin: Transitions
N_state = A;// Reset state
Trang 506.2 MÁY MEALY – MẠCH PHÁT HIỆN CHUỖI BIT:
always @ (X or p_state ) begin: Transitions
n_state = A;// Reset state
Trang 52Phương pháp thực hiện:
Người học sử dụng SW0 để chọn giá trị ngõ vào X, nhấn nút KEY1 để cấp xung đồng hồ, KEY0 để reset hoạt động của hệ thống và quan sát trạng thái LEDG0: LED sẽ sáng khi chuỗi bít 1011 được phát hiện trong chuỗi giá trị nhận được ở ngõ vào X
Trang 5353
Trang 54parameter SEC5=4’b1111,SEC1=4’b0011; // delaysalways @ (posedge clk)
Trang 57case (state)
S0: lights = 6’b100001; //Cot1:G;Cot2:RS1: lights = 6’b010001; //Cot1:Y;Cot2:RS2: lights = 6’b001001; //Cot1:R;Cot2:RS3: lights = 6’b001100; //Cot1:R;Cot2:GS4: lights = 6’b001010; //Cot1:R;Cot2:YS5: lights = 6’b001001; //Cot1:R;Cot2:Rdefault lights = 6’b100001; //Cot1: G;Cot2:Rendcase
Trang 58assign clk3 = q[24]; // 3 HZ
endmodule
Kiểm tra và thiết kế BAI6C_test với nội dung sau:
module BAI6C_test(
input wire CLOCK_50,
input wire [0:0] KEY,