Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 301 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
301
Dung lượng
12,89 MB
Nội dung
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP.HCM KHOA ĐIỆN - ĐIỆN TỬ BỘ MƠN KỸ THUẬT MÁY TÍNH - VIỄN THÔNG *** BÁO CÁO TỔNG HỢP MÔN THỰC TẬP THIẾT KẾ HỆ THỐNG VÀ VI MẠCH TÍCH HỢP Lớp: chiều thứ 6, tiết 7-11 Nhóm: Sinh viên thực hiện: Trần Thành Trung-19161311 Giảng viên hướng dẫn: Lê Minh Thành TP.HCM, ngày 14 tháng 10 năm 2021 MỤC LỤC Mạch Cộng Trừ mạch tổ hợp I Bài 1: mạch cộng nhị phân toàn phần bit 1.1 RTL 1.2 Instances 1.3 Top module 1.4 Testbench 1.5 Timing Diagram Bài 2: mạch trừ nhị phân toàn phần bit 2.1 RTL 2.2 Instances 2.3 Top module 2.4 Testbench 2.5 Timing Diagram Bài 3: mạch giải mã sang 4, dùng case, ngõ mức cao .8 3.1 RTL 3.2 Top module 3.3 Testbench 3.4 Timing Diagram 10 Bài 4: mạch giải mã sang 4, dùng if, ngõ mức cao 11 4.1 RTL 11 4.2 Top module 12 4.3 Testbench 13 4.4 Timing Diagram 14 Bài 5: Mạch giải mã sang ngõ tích cực mức thấp dùng lệnh case 14 5.1 RTL 14 5.2 Top module 15 5.3 Testbench 16 5.4 Timing Diagram 17 Mạch giải mã sang ngõ tích cực mức thấp dùng lệnh if 17 6.1 RTL 17 6.2 Top module 18 6.3 Testbench 19 6.4 Timing Diagram 20 Bài 7: mạch giải mã sang 4, có enable, ngõ mức cao, dùng case 20 7.1 RTL 20 7.2 Top module 21 7.3 Testbench 22 7.4 Timing Diagram 23 Bài 8: mạch giải mã sang 4, có enable, ngõ mức cao, dùng if 23 8.1 RTL 23 8.2 Top module 25 8.3 Testbench 25 8.4 Timing Diagram 26 Bài 9: mạch giải mã sang 4, có enable, ngõ mức thấp, dùng case 26 9.1 RTL 26 9.2 Top module 28 9.3 Testbench 29 9.4 Timing Diagram 30 10 Bài 10: mạch giải mã sang 4, có enable, ngõ mức thấp, dùng if .30 10.1 RTL 30 10.2 Top module 32 10.3 Testbench 33 10.4 Timing Diagram 34 11 Bài 11: mạch giải mã sang trực tiếp .34 11.1 RTL 34 11.2 Top module 36 11.3 Testbench 36 11.4 Timing Diagram 38 12 Bài 12: Mạch giải mã sang từ mạch giải mã sang 38 12.1 RTL 38 12.2 Instances 39 12.3 Top module 40 12.4 Testbench 40 12.5 Timing Diagram 42 13 Bài 13: mạch mã hóa sang 2, ngõ mức cao, dùng case 42 13.1 RTL 42 13.2 Top module 44 13.3 Testbench 44 13.4 Timing Diagram 45 14 14.1 Bài 14: mạch mã hóa sang 2, ngõ mức thấp, dùng case 45 RTL 45 14.2 Top module 47 14.3 Testbench 47 14.4 Timing Diagram 48 15 Bài 14: mạch mã hóa sang 2, ngõ mức cao, dùng case 48 15.1 RTL 48 15.2 Top module 50 15.3 Testbench 50 15.4 Timing Diagram 51 16 Bài 16: mạch mã hóa sang 2, ngõ mức thấp, dùng if 51 16.1 RTL 51 16.2 Top module 53 16.3 Testbench 53 16.4 Timing Diagram 54 17 Bài 17: Mạch mã hóa sang 2, ngõ vào mức cao, có enable, dùng case 54 17.1 RTL 54 17.2 Top module 55 17.3 Testbench 56 17.4 Timing Diagram 57 18 Bài 17: Mạch mã hóa sang 2, ngõ vào mức cao, có enable, dùng if 57 18.1 RTL 57 18.2 Top module 59 18.3 Testbench 59 18.4 Timing Diagram 60 19 Bài 19: Mạch mã hóa sang 2, ngõ vào mức thấp, có enable, dùng case 61 19.1 RTL 61 19.2 Top module 62 19.3 Testbench 63 19.4 Timing Diagram 64 20 Bài 20: Mạch mã hóa sang 2, ngõ vào mức thấp, có enable, dùng if 64 20.1 RTL 64 20.2 Top module 66 20.3 Testbench 66 20.4 Timing Diagram 67 21 Bài 21: mạch mã hóa sang viết trực tiếp 68 21.1 RTL 68 21.2 Top module 68 21.3 Testbench 69 21.4 22 Timing Diagram 69 Bài 22: mạch mã hóa sang ghép từ sang 70 22.1 RTL 70 22.2 Instances 71 22.3 Top module 72 22.4 Testbench 73 22.5 Timing Diagram 74 23 Bài 23: mạch đa hợp sang dùng case .75 23.1 RTL 75 23.2 Top module 76 23.3 Testbench 76 23.4 Timing Diagram 77 24 Bài 24: mạch đa hợp sang dùng if 79 24.1 RTL 79 24.2 Top module 80 24.3 Testbench 80 24.4 Timing Diagram 81 25 Bài 25: mạch đa hợp sang có enable, dùng case .83 25.1 RTL 83 25.2 Top module 84 25.3 Testbench 85 25.4 Timing Diagram 86 26 Bài 26: mạch đa hợp sang có enable, dùng if 88 26.1 RTL 88 26.2 Top module 89 26.3 Testbench 90 26.4 Timing Diagram 91 27.Bài 27: mạch đa hợp sang viết trực tiếp 93 27.1 RTL 93 27.2 Top Module 94 27.2 Testbench 95 27.3 Timing Diagram 97 28 Bài 28: mạch đa hợp sang ghép từ sang 99 28.1 RTL 99 28.2 Instances 100 28.3 Top module 101 28.4 Testbench 101 28.5 29 Timing Diagram 103 Bài 29: mạch giải đa hợp sang dùng case 105 29.1 RTL 105 29.2 Top module 106 29.3 Testbench 106 29.4 Timing Diagram 107 30 Bài 30: mạch giải đa hợp sang dùng if 108 30.1 RTL 108 30.2 Top module 109 30.3 Testbench 109 30.4 Timing Diagram 110 31 Bài 31: mạch giải đa hợp sang dùng case có enable .111 31.1 RTL 111 31.2 Top module 112 31.3 Testbench 113 31.4 Timing Diagram 114 32 Bài 32: mạch giải đa hợp sang dùng if có enable 114 32.1 RTL 114 32.2 Top module 115 32.3 Testbench 116 32.4 Timing Diagram 117 33.Bài 33: mạch giải đa hợp sang viết trực tiếp 118 33.1 RTL 118 33.2 Top module 119 33.3 Testbench 120 33.4 Timing Diagram 121 34 Bài 24: mạch giải đa hợp sang ghép từ sang 122 34.1 RTL 122 34.2 Instance 124 34.3 Top module 125 34.4 Testbench 125 34.5 Timing Diagram 127 35 Bài 35: mạch so sánh trực tiếp bit 127 35.1 RTL 127 35.2 Top module 128 35.3 Testbench 129 35.4 Timing Diagram 131 36 II Bài 36: mạch so sánh bit thông qua phép trừ .131 36.1 RTL 131 36.3 Top module 133 36.4 Testbench 134 36.5 Timing Diagram 135 Mạch đếm 136 Mạch đếm (Counter) 136 1.1 RTL 136 1.2 Top module 137 1.3 Testbench 137 1.4 Timing diagram 138 Thiết kế mạch chia xung với ngõ vào 50Mhz, xung ngõ với tần số f, 2f, 4f, 8f, lựa chọn f ~ 1Hz .138 2.1 RTL 138 2.2 Top module 139 2.3 Testbench 140 2.4 Timing diagram 140 Thiết kế mạch tạo xung 1Hz 141 3.1 RTL 141 3.2 Top module 142 3.3 Testbench 143 3.4 Timing diagram 144 Thiết kế mạch tạo xung ngõ với tần số 0.1Hz, 1Hz, 10Hz, 100Hz .145 4.1 RTL 145 4.2 Top module 145 4.3 Testbench 146 4.4 Timing diagram 147 Thiết kế mạch đếm đồng bộ, sử dụng phương pháp cài đặt Flip – Flop Xung đếm 1Hz lấy từ mạch chia xung 149 5.1 RTL 149 5.2 Intances 150 5.3 Top module 151 5.4 Testbench 151 5.5 Timming diagram 152 Thiết kế mạch đếm lên bit 3.3.4, sử dụng phương pháp thiết kế đồng 152 6.1 RTL 152 6.2 Instances 153 6.3 Top module 154 6.4 Testbench 154 6.5 Timming diagram 155 Thiết kế mạch đếm lên bit, lựa chọn tần số đếm, lựa chọn đếm lên đếm xuống .156 7.1 RTL 156 7.2 Instances 156 7.3 Top module 159 7.4 Timing diagram 159 Mạch đếm lên bit, lựa chọn tần số đếm khác nhau, lựa chọn đếm lên đếm xuống, có tính hiệu cho phép dừng đếm (Pause), có tín hiệu đảo trạng thái ngõ 161 8.1 Chân pause tác động khối counter 161 8.1.1 RTL 161 8.1.2 Instance 162 8.1.3 Top module 166 8.1.4 Testbench 167 8.1.5 Timing diagram 170 8.2 Chân pause tác động chia xung 171 8.2.1 RTL 171 8.2.2 Instanes 173 8.2.3 Top module 176 8.2.4 Testbench 177 8.2.5 Timing diagram 179 III Thanh ghi dịch 181 Thiết kế ghi dịch bit vào nối tiếp nối tiếp hình Sử dụng cài đặt module FF-D 181 1.1 RTL 181 1.2 Instances 182 1.3 Top module 183 1.4 Testbench 183 1.5 Timing diagram 184 Thiết kế ghi dịch vao nối tiếp nối tiếp Sử dụng phương pháp thiết kế đồng 185 2.1 RTL 185 2.2 Instances 185 2.3 Top module 187 2.4 Testbench 187 2.5 Timing diagarm 188 Thiết kế mạch ghi dịch vào nối tiếp song song cách cài đặt Flip flop D 189 3.1 RTL 189 3.2 Instances 189 3.3 Top Module 191 3.4 Testbench 191 3.5 Timing diagram 193 Thiết kế mạch ghi dịch vào nối tiếp song song phương pháp thiết kế đồng 194 4.1 RTL 194 4.2 Instances 195 4.3 Top Module 196 4.4 Testbench 196 4.5 Timing Diagram 198 Thiết kế mạch điều khiển LED sáng dần từ trái qua phải, tắt dần từ trái qua phải 199 5.1 RTL 199 5.2 Intances 200 5.3 Top module 201 5.4 Testbench 201 5.5 Timming diagram 202 Thiết mạch điều khiển LED sáng dần, tắt dần từ trái sang phải từ phải sang trái lựa chọn switch 203 6.1 RTL 203 6.2 Top module 204 6.3 Testbench 206 6.4 Timing diagram 207 Thiết kế mạch điều khiển led chạy từ trái sang phải, từ phải sang trái .209 7.1 RTL 209 7.2 Intances 209 7.3 Top Module 211 7.4 Testbench 211 7.5 Timing diagram 213 Thiết kế mạch điều khiển Led chạy từ trái sang phải tự động chạy từ phải sang trái, có switch cho phép đảo trạng thái ngõ 214 8.1 RTL 214 8.2 Top module 215 8.3 Testbench 215 8.4 Timing diagram 217 Thiết kế mạch gồm led đơn, switch S1, S2, S3, S4 - S1, S2, lựa chọn tần số - S3, S4, lựa chọn mode cho led - Mode =1: led chớp tắt, - Mode =2: led sáng dần, tắt dần, - Mode = 3: led sáng chạy từ trái sang phải, từ phải sang trái - Mode = 4: led sáng dồn 218 IV 9.1 RTL 218 9.2 instance 219 9.3 Top module 223 9.4 Testbench 224 9.5 Timing diagram 228 Máy trạng thái 239 Máy trạng thái 239 1.1 RTL 239 1.2 Top module 239 1.3 Testbench 240 1.4 Timing diagram 242 Máy trạng thái 242 2.1 RTL 243 2.2 Top Module 243 2.3 Testbench 244 2.4 Timing diagram 246 Thiết kế mạch đếm xung, hiển thị LED, xung ngõ vào tạo từ nút nhấn 247 3.1 RTL 247 3.2 Mạch Module 247 3.2.2 Top Module .252 3.3 Testbench 252 3.4 Timing diagram 254 Thiết kế mạch đếm lên, đếm xuống với tần số 1Hz, điều khiển nút nhấn .255 4.1 RTL 255 4.2 Mạch Module 256 4.2.2 Top Module: .262 4.3 Testbench 262 4.4 Timing diagram 264 Thiết kế mạch đếm xung 1Hx, đếm lên / xuống, điều khiển nút nhấn, có nút PAUSE, có nút SPEED để thay đổi tốc độ đếm (4 tốc độ khác nhau) .266 5.1 RTL 266 5.2 Mạch Module 266 5.2.1 Các Instance 266 5.3 Testbench 273 5.4 Timing diagram 276 endmodule 5.4 Timing diagram Khoảng từ 0ns đến 10ns, clk tác động cạnh lên, reset tác động mức 1, pause mức ngõ 0, trước ngõ không xác định Khoảng từ 20ns đến 120ns, clk tác động cạnh lên, reset tác động mức 0, pause tác động mức mạch bắt đầu đếm lên, tác động nút nhấn btn giá trị giữ ngun sau bắt đầu q trình đếm xuống, speed lúc 00 276 Khoảng từ 230ns trở đi, clk tác động, reset tác động mức 0, pause tác động mức 1, speed mức 00, ta nhấn nút btn (btn=1) mạch giữ nguyên ngõ sau bắt đầu q trình đếm lên Khoảng từ 440ns trở đi, clk tác động cạnh lên, reset tác động mức 0, pause tác động mức 1, speed mức 01, ta nhấn nút mạch giữ nguyên ngõ sau bắt đầu đếm xuống V Bài kiểm tra 277 CÁCH : Mô tả instances RS-FF nối dây theo sơ đồ logic đính kèm 1.1 RTL 1.2 Instance module FF_RS( input RST,input R, input CLK, input S,output reg Q, 278 output reg Qd ); always@( negedge CLK, negedge RST) if(RST == 0) Q = 1'b0; else begin case({S,R}) 0:Q=Q; 1:Q=1'b0; 2:Q=1'b1; default Q=1'bx; endcase assign Qd=~Q; end endmodule 1.3 Top module module SIPO( input a, input b, input clk, input clr, output [7:0]q ); wire c; wire [7:0] qd; wire [7:0] d; assign c = ~(a&b); FF_RS IC1(clr, c, ~clk, ~c, d[7], qd[7]); FF_RS IC2(clr, qd[7], ~clk, d[7], d[6], qd[6]); FF_RS IC3(clr, qd[6], ~clk, d[6], d[5], qd[5]); 279 FF_RS IC4(clr, qd[5], ~clk, d[5], d[4], qd[4]); FF_RS IC5(clr, qd[4], ~clk, d[4], d[3], qd[3]); FF_RS IC6(clr, qd[3], ~clk, d[3], d[2], qd[2]); FF_RS IC7(clr, qd[2], ~clk, d[2], d[1], qd[1]); FF_RS IC8(clr, qd[1], ~clk, d[1], d[0], qd[0]); assign q = d; endmodule 1.4 Testbench module test; // Inputs reg a; reg b; reg clk; reg clr; // Outputs wire [7:0] q; // Instantiate the Unit Under Test (UUT) SIPO uut ( a(a), b(b), clk(clk), clr(clr), q(q) ); initial begin // Initialize Inputs a = 0; b = 0; clk = 0; 280 clr = 1; // Wait 100 ns for global reset to finish #100; clr = 0; #10; clr = 1; a = 1; b = 0; #200; clr = 1; a = 0; b = 1; #100; clr = 1; a = 1; b = 1; #100; clr = 1; a = 0; b = 1; #50; clr = 1; a = 1; b = 1; #25; 281 clr = 0; a = 0; b = 1; #10; clr = 1; end always begin clk = ~clk;#10; end endmodule 1.5 Timing diagram • Trong khoảng 0ns -100ns: clr=1 (không tác động) , ngõ q khơng xác định • Trong khoảng 100ns-110ns, clr = (tác động), ngõ q =0 282 Trong khoảng 110ns-310ns, clr = 1(không tác động), a=1,b=0, ngõ không cho phép • dịch • Trong khoảng 310ns-410ns: clr = 1(khơng tác động), a=0,b=1, ngõ khơng cho phép dịch • Khoảng 420ns đến 510ns: clr = 1(không tác động), b=1 a=1, xung clk tác động cạnh lên mạch cho phép dịch 283 • Trong khoảng 585ns-595ns, clr = (tác động), ngõ q =0 Cách 2: Thiết kế theo phương pháp đồng 2.1 RTL 284 2.2 Instances `timescale 1ns / 1ps module Shift_SIPO( input wire clk,rst,s_in, output wire [7:0] q_out ); reg [7:0] r_reg; wire [7:0] r_next; always@(posedge clk, negedge rst) if(rst==0) r_reg y = • Từ 560ns tới 660ns: en = mạch cho phép giải mã ngõ vào w