












Study with the several resources on Docsity
Earn points by helping other students or get them with a premium plan
Prepare for your exams
Study with the several resources on Docsity
Earn points to download
Earn points by helping other students or get them with a premium plan
Community
Ask the community for help and clear up your study doubts
Discover the best universities in your country according to Docsity users
Free resources
Download our free guides on studying techniques, anxiety management strategies, and thesis advice from Docsity tutors
prelab 4 kỹ thuật số bách khoa hcm
Typology: Study Guides, Projects, Research
1 / 20
This page cannot be seen from the preview
Don't miss anything!
Họ và tên : Đặng Dương Gia Bảo Lớp TN : L MSSV : 2210198 Ngày TN : 27/10/
Nắm được cách sử dụng kit thí nghiệm, phần mềm lập trình. Nắm được cách khảo sát và thiết kế hệ mạch đếm sử dụng các IC chức năng cơ bản. Nắm được quy trình mô tả phần cứng trên FPGA.
Bài thí nghiệm 0 của tài liệu hướng dẫn phần Thí nghiệm trên kit DE2. Sinh viên phải hoàn thành và nộp PRELAB 4 trước khi vào lớp. Department of Electronics Page | 1
Mục tiêu: Nắm được các thức mô tả mạch cộng toàn phần (FA) sử dụng ngôn ngữ systemverilog. Yêu cầu: Sinh viên đọc đoạn chương trình sau đây dùng để mô tả bộ FA.
Sinh viên tiến hành biên dịch đoạn chương trình trên. Sau đó, sinh viên tiến mô phỏng dạng sóng ngõ ra trong tất cả các trường hợp của ngõ vào. Chụp hình dạng sóng ngõ ra. Department of Electronics Page | 2
File design.sv: module FA( input A, input B, input C, input sel, output S, output Ci ); logic B_res; assign B_res = B ^ sel; assign S = A ^ B_res ^ C; assign Ci=(A&B_res)|(A&C)|(B_res&C); endmodule module congtru4bitFA( input logic [3:0] A, input logic [3:0] B, input logic sel, output logic [3:0] S, output Ci,Co ); assign Co = sel; logic C1,C2,C3; Department of Electronics Page | 4
FA FA1(.A(A[0]),.B(B[0]),.C(sel),.sel(sel),.S(S[0]),.Ci(C1)); FA FA2(.A(A[1]),.B(B[1]),.C(C1),.sel(sel),.S(S[1]),.Ci(C2)); FA FA3(.A(A[2]),.B(B[2]),.C(C2),.sel(sel),.S(S[2]),.Ci(C3)); FA FA4(.A(A[3]),.B(B[3]),.C(C3),.sel(sel),.S(S[3]),.Ci(Ci)); Endmodule File Testbench.sv: `timescale 1ns/1ns module testbench; reg [3:0] A; reg [3:0] B; reg sel; wire [3:0] S; wire Ci,Co; congtru4bitFA sus(.A(A),.B(B),.sel(sel),.S(S),.Ci(Ci),.Co(Co)); initial begin $dumpfile("dump.vcd"); $dumpvars(1); A = 4'b1000; B = 4'b0001; sel = 1'b0;
A = 4'b0101; Department of Electronics Page | 5
$finish; end endmodule Sinh viên tiến mô phỏng dạng sóng ngõ ra trong một vài trường hợp của ngõ vào. Chụp hình dạng sóng ngõ ra.
Mục tiêu: Nắm được các thức mô tả mạch giải mã số BCD sang mã LED 7 đoạn loại anode chung sử dụng ngôn ngữ systemverilog. Yêu cầu: Sinh viên thực hiện mô tả mạch giải mã số BCD sang mã LED 7 đoạn loại anode chung. Sinh viên hoàn thành bảng chân trị của mạch giải mã. Department of Electronics Page | 7
source: internet Sinh viên thực hiện mô tả theo yêu cầu của bài toán sử dụng ngôn ngữ systemverilog. Gợi ý: sử dụng câu lệnh case ….. input [3:0]I; always@(*) begin case(I) 4’b0000: out <= 7’b1000000; 4’b0001: out <= … … endcase; end File design.sv: module BCDthanhLED7( input logic [3:0] I, output logic [6:0] out Department of Electronics Page | 8
$dumpfile("dump.vcd"); $dumpvars(1); I = 4'b0000;
I = 4'b0001;
I = 4'b0010;
I = 4'b0011;
I = 4'b0100;
I = 4'b0101;
I = 4'b0110;
I = 4'b0111;
I = 4'b1000;
I = 4'b1001;
$finish; Department of Electronics Page | 10
end endmodule Sinh viên tiến mô phỏng dạng sóng ngõ ra trong một vài trường hợp của ngõ vào. Chụp hình dạng sóng ngõ ra.
Mục tiêu: Nắm được các thức mô tả mạch chuyển đổi 1 xung có tần số 50MHz sang 1 xung có tần số 1Hz sử dụng ngôn ngữ systemverilog. Yêu cầu: Sinh viên thực hiện mô tả mạch chuyển đổi 1 xung có tần số 50MHz sang 1 xung có tần số 1Hz. Gợi ý:
out = ~ out; i = 0; end endmodule File testbench.sv : `timescale 1ns/1ns module testbench; reg cl; wire ou; prelab4_cb4 sus(.clk(cl),.out(ou)); initial begin $dumpfile("dump.vcd"); $dumpvars(1);
cl = 1'b1;
cl = 1'b0;
cl = 1'b1; $finish; end endmodule Department of Electronics Page | 13
Department of Electronics Page | 14
Các trạng thái lần lượt là: S0 (00), S1 (01), S2 (10), S3(11) Đoạn chương trình cho máy trạng thái trên: input X; //Khai báo ngõ vào 1 bit input clk; //Khai báo clock output reg [1:0]Y; //Khai báo ngõ ra 2 bit parameter S0=2'b00, S1=2'b01, S2=2'b10, S3=2'b11; //Định nghĩa các trạng thái reg [1:0]pre_state, next_state; //Các thanh ghi chưa trạng thái //Khối chuyển trạng thái always@(posedge clk) begin if (rst) begin pre_state <= S0; end else pre_state <= next_state; Department of Electronics Page | 16
end //Khối chuyển trạng thái always@(pre_state or X) begin case(pre_state) S0: if (X) next_state <= S1; else next_state <= S0; S1: if (!X) next_state <= S2; else next_state <= S0; S2: if (!X) next_state <= S3; else next_state <= S2; S3: if (!X) next_state <= S0; else next_state <= S3; endcase; end //Khối tạo ngõ ra always@(*) begin case (pre_state) S0: Y <= 2'b00; S1: Y <= 2'b10; S2: Y <= 2'b11; S3: Y <= 2'b01; endcase; Department of Electronics Page | 17
S2: if (X) next_state <= S4; else next_state <= S1; S3: if (X) next_state <= S5; else next_state <= S4; S4: if (X) next_state <= S6; else next_state <= S3; S5: if (X) next_state <= S1; else next_state <= S6; S6: if (X) next_state <= S2; else next_state <= S5; endcase; end //Khối tạo ngõ ra always@(*) begin case (pre_state) S0: Y <= 3'b000; S1: Y <= 3'b001; S2: Y <= 3'b010; S3: Y <= 3'b011; S4: Y <= 3'b100; S5: Y <= 3'b101; S6: Y <= 3'b110; endcase; Department of Electronics Page | 19
end Department of Electronics Page | 20