Thiết kế tổng hợp IC số và hệ thống số
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG ******* BÁO CÁO GIỮA KỲ THIẾT KẾ TỔNG HỢP IC SỐ VÀ HỆ THỐNG SỐ Nhóm thực hiện: Nhóm Giảng viên hướng dẫn: TS Võ Lê Cường Hà Nội, 11/2018 MỤC LỤC MỤC LỤC DANH MỤC HÌNH ẢNH DANH MỤC BẢNG BIỂU PHÂN CÔNG CÔNG VIỆC CHƯƠNG 1: CÁC VÍ DỤ TRONG CHƯƠNG 11 1.1 Commpare bit .11 1.2 Mux 4-1 14 1.3 Full-adder bit .16 1.4 Thực cổng AND ba đầu vào 19 1.5 Encoder 23 1.6 Decoder 2-4 25 1.7 Hiển thị led thanh(Anot chung) .28 1.8 Adder using a hard literal 31 1.9 Adder using parameter 33 1.10 Adder instantiation example 34 1.11 Sign-magnitude adder 36 1.12 Barrel shifter case .38 1.13 Barrel shifter stage 40 1.14 Simplified floating-point adder 41 CHƯƠNG 2: CÁC VÍ DỤ TRONG CHƯƠNG 44 2.1 DFF without reset asynchronous 44 Verilog Code: 44 2.2 DFF with reset asynchronous 45 2.3 DFF with enable synchronous 46 2.4 Register 47 2.5 Register file 48 2.6 Free-running shift register .50 2.7 Universal shift register 51 2.8 Free-Runing Binary Counter 54 2.9 Universal binary counter .56 2.10 Mod-m counter 58 DANH MỤC TÀI LIỆU THAM KHẢO 59 DANH MỤC HÌNH Ả Hình 1.1 Mơ Compare bit .13 Hình 1.2 Mạch RTL Compare 14 Hình 1.3 Mơ MUX41 16 Hình 1.4 Mạch RTL MUX41 16 Hình 1.5 Mô Half Adder 18 Hình 1.6 Mơ Full Adder 1bit .18 Hình 1.7 Mơ Full Adder 4bit .19 Hình 1.8 Khối DUT And bit 20 Hình 1.9 Mạch And đầu vào 20 Hình 1.10 Mơ mạch And đầu vào .21 Hình 1.11 Mạch AND đầu vào sai 21 Hình 1.12 Mơ mạch And đầu vào lỗi 22 Hình 1.13 Mạch Encoder ưu tiên 23 Hình 1.14 Khối DUT Endcoder 24 Hình 1.15 Mơ Encoder 25 Hình 1.16 Mạch Decoder 2-4 .26 Hình 1.17 Khối DUT Decoder 27 Hình 1.18 Mơ Decoder 2-4 27 Hình 1.19 Mơ mạch Hex to sseg .29 Hình 1.20 Mạch RTL Hex to Sseg 29 Hình 1.21 Sơ đồ khối Adder using a hard literal 31 Hình 1.22 Mơ Adder using a hard literal 32 Hình 1.23 Mạch RTL Adder using a hard literal 32 Hình 1.24 Sơ đồ khối Adder using parameter .33 Hình 1.25 Mơ sử dụng Adder using parameter 34 Hình 1.26 Sơ đồ khối Adder instantiation example 34 Hình 1.27 Mơ Adder instantiation example .35 Hình 1.28 Mạch RTL Adder instantiation example 35 Hình 1.29 Sơ đồ khối Sign-magnitude adder 36 Hình 30 Mơ Sign-magnitude adder 37 Hình 1.31 Mạch RTL Sign-magnitude adder 38 Hình 1.32 Mơ Barrel shifter case .39 Hình 1.33 Mạch RTL Barrel shifter case 39 Hình 1.34 Mô Barrel shifter stage 40 Hình 1.35 Mạch RTL Barrel shifter stage .41 Hình 1.36 Mơ Simplified floating-point adder 43 Hình 1.37 Mạch RTL Simplified floating-point adder .43Y Hình 2.1 Khối DUT bảng nguyên lý DFF 44 Hình 2.2 Mơ DFF 44 Hình 2.3 Khối DUT bảng nguyên lý DFF with reset asynchronous 45 Hình 2.4 Mơ DFF with reset asynchronous .46 Hình 2.5 Khối DUT bảng nguyên lý DFF with enable synchronous .46 Hình 2.6 Mơ DFF with enable synchronous 47 Hình 2.7 Khối DUT Register 48 Hình 2.8 Mô Register 48 Hình 2.9 Khối DUT Register file 49 Hình 2.10 Mơ Register file 49 Hình 2.11 Mơ Free-running shift register .51 Hình 2.12 Mạch RTL Free-running shift register 51 Hình 2.13 Mô Universal shift register .53 Hình 2.14 Mạch RTL Universal shift register .53 Hình 2.15 Sơ đồ thuật toán Free-Runing Binary Counter .54 Hình 2.16 Mơ Free-Runing Binary Counter 55 Hình 2.17 Mạch RTL Free-Runing Binary Counter 55 Hình 2.18 Mơ Universal binary counter 57 Hình 2.19 Mạch RTL Universal binary counter 57 Hình 2.20 Mơ Mod-m counter 58 Hình 2.21 Mô Mod-m counter 58 DANH MỤC BẢNG BI Bảng Bảng phân chia công việc 10Y Bảng 1.1 Bảng chân lý Compare 12 Bảng 1.2 Bảng chân lý Mux41 15 Bảng 1.3 Bảng chân lý cổng AND đầu vào 20 Bảng 1.4 Bảng chân lý Encode ưu tiên không ưu tiên 23 Bảng 1.5 Bảng chân lý Decoder 2-4 .26 Bảng 1.6 Bảng chuyển đổi giá trị Hex LED7 Anot Bảng 2.1 Bảng chức Universal binary counter 56 PHÂN CƠNG CƠNG VIỆC Thành viên Ngơ Văn Quyền MSSV 2015308 Cơng việc - Tìm hiểu thiết kế mạch tổ hợp số mạch : +Full adder 2bit, Decoder, Encoder, And, Eq_always +D-flipflop, Register - Đọc tìm hiểu chương (cấu trúc quy ước Verilog) sách “Advanced Digital Desgin”; Phần 3.4 – 3.5 sách “FPGA Prototyping By Verilog Examples” Nguyễn Văn Cường 2015052 - Tìm hiểu thiết kế mạch tổ hợp số mạch thiết kế : +Adder (4 bits, N bits sử dụng Parameter, Cộng có dấu, độ lớn) +Shifter (Universal shift register, Free running shift register, Barrel shifter stage, Barrel shifter case) - Đọc tìm hiểu chương (Mơ hình phân cấp) sách “Advanced Digital Desgin”; Phần 3.6 – 3.8 sách “FPGA Prototyping By Verilog Examples” Nguyễn Duy Quang 2015295 - Nắm bắt, phân chia công việc tổng hợp phần làm bạn nhóm, làm slide, viết báo cáo - Tìm hiểu thiết kế mạch tổ hợp số mạch thiết kế : +Counter (Free-Runing Binary Counter, Universal binary counter, Mod-m counter) +Dsp_Mux (Hex to Seg, mạch hiển thị LED7 thanh) - Đọc tìm hiểu chương (Tổng quan thiết kế hệ thống số sử dụng ngôn ngữ mô tả phần cứng Verilog ) sách “Advanced Digital Desgin”; Phần 3.1 – 3.3 sách “FPGA Prototyping By Verilog Examples” Bảng Bảng phân chia công việc CHƯƠNG 1: CÁC VÍ DỤ TRONG CHƯƠNG 1.1 Commpare bit Mạch bao gồm: o Input bit: A1A0 B1B0 ; Output bit : it, eq gt Nguyên lý hoạt động: o Đầu it = A1A0 < B1B0, đầu khác o Đầu eq = A1A0 = B1B0, đầu khác o Đầu gt = A1A0 > B1B0, đầu khác Bảng chân lý: A1 0 0 0 0 1 1 1 1 A0 0 0 1 1 0 0 1 1 B1 B0 it 0 0 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 1 Bảng 1.1 Bảng chân lý Compare eq 0 0 0 0 0 0 gt 0 0 0 1 0 1 Bìa Kangnau: a Eq: B0B1 A0A1 00 00 01 11 10 01 11 10 eq = A1’A0’B1’B0’ + A1’A0B1’B0 + A1A0B1B0 + A1A0’B1B0’ b Gt: B0B1 A0A1 00 00 01 11 10 gt = A0B1’B0’ + A1A0B0’ + A1B1’ 01 11 1 10 c lt: B0B1 A0A1 00 00 01 11 10 lt = A1’A0’B0 + A0’B1B0 + A1’B1 01 11 10 1 1 1 Code Verilog: module compare(lt,gt,eq,A,B); output lt,gt,eq; input [1:0] A,B; wire [9:0] C; wire [3:0] D; not n1(D[0], A[0]); 10 not n2(D[1], A[1]); 10 Khối DUT: clk d Register q reset Hình 2.7 Khối DUT Register Kết mơ phỏng: Hình 2.8 Mơ Register Giải thích: Khi reset = (tại sườn lên reset) q* = 8’b00000000 Khi reset = xét sườn lên clock q* = d 2.5 Register file Code Verilog: module reg_file #( parameter B = 8, // number of bits W = // number of address bits ) ( 65 input wire clk, input wire wr_en, input wire [W-1:0] w_addr, r_addr, 10 input wire [B-1:0] w_data, 11 output wire [B-1:0] r_data 12 ); 13 14 // signal declaration 15 reg [B-1:0] array_reg [2**W-1:0]; 16 17 // body 18 // write operation 19 always @(posedge clk) 20 21 if (wr_en) array_reg [w_addr]