Bài tập lớn Thiết kế VLSI - Nhóm 3: Thiết kế vi điều khiển 8-bit (HUST) Thầy Nguyễn Vũ Thắng

LI
lienhejb
0 downloads
17
0

Document content

Page 1

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THÔNG ---- VLSI FINAL PROJECT DESIGN SPECS OF A 8 BITS MICROPROCESSOR Nhóm 3cuu duong than cong . com Thành viên:Đỗ Minh Giang – 20141216 Lương Văn Minh – 20152445 Nguyễn Tiến Thái – 20144029 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 2

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 NỘI DUNG BÁO CÁO I. LỜI MỞ ĐẦU....................................................................................................2 1.1. MỤC ĐÍCH................................................................................................2 1.2. TÀI LIỆU THAM KHẢO..........................................................................2 1.3. DEFINATION......................................... Error! Bookmark not defined. II. THIẾT KẾ CHÍNH........................................................................................3 2.1. TỔNG QUAN ............................................................................................3 2.2. THIẾT KẾ TỪNG KHỐI...........................................................................4 2.2.1. Khối top level ( Microcontroller) ........................................................4 2.2.2. Khối control ( Control Unit) ................................................................4 2.2.3. ALU Unit .............................................................................................5 2.2.4. Program Memory .................................................................................7 2.2.5. Data Memory .......................................................................................8 2.2.6. MUX and adder....................................................................................9 2.2.7. Registers.............................................................................................10 2.3. TẬP LỆNH...............................................................................................11 III. CÁC CỔNG GIAO TIẾP VÀ BIỂU ĐỒ TIMING........................................15 3.1. CỔNG GIAO TIẾP ..................................................................................15 3.2. SƠ ĐỒcuu duong than cong . comTIMING.......................................................................................16 IV. KẾT QUẢ.......................................................................................................16 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 3

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 I. LỜI MỞ ĐẦU 1.1. MỤC ĐÍCH Đây là thiết kế Microcontroller 8 bit của nhóm project số 3 bao gồm những thành viên sau: Đỗ Minh Giang – 20141216 Lương Văn Minh – 20152445 Nguyễn Tiến Thái – 20144029 MCU của nhóm chúng tôi được thiết kế dựa theo 4 bước vận hành lệnh chính bao gồm LOAD, FETCH, DECODE, EXECUTE và khả năng được áp dụng vào các kit để tạo ra một vi xử lý có khả năng thực hiện các lệnh đã được lập trình sẵn. 1.2. TÀI LIỆU THAM KHẢO https://en.wikipedia.org/wiki/Intel_8088 https://en.wikipedia.org/wiki/Processor_design Verilog Tutorial by Deepak kumar Tala Project còn dựa vào rất nhiều nguồn khác nhưng do không có tác giả và đường link xác thực nên sẽ không được đưa vào trong báo cáo cuối cùng. cuu duong than cong . com 2 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 4

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 II. THIẾT KẾ CHÍNH Thiết kế của chúng tôi bao gồm một khối top điều khiển các hoạt động giao tiếp của một số khối nhỏ khác và một chương trình test bench đơn giản để thực hiện chạy mô phỏng khối top. 2.1. TỔNG QUAN Như đã nói ở trên thiết kế của chúng tôi dựa vào 4 bước hoạt động chính theo mỗi chương trình: LOAD, FETCH, DECODE, EXECUTE. Cụ thể các bước hoạt động và sơ đồ khối sẽ được thể hiện qua sơ đồ sau: cuu duong than cong . com Hình 1. Thiết kế khối của toàn bộ MCU theo các bước thực hiện chương trình 3 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 5

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 2.2. THIẾT KẾ TỪNG KHỐI 2.2.1. Khối top level ( Microcontroller) Khối top level sẽ điều khiển hoạt động nạp chương trình và điều khiển các cổng giao tiếp của các khối với nhau. Khối top sẽ được điều khiển theo 2 tín hiệu là clk (clock), rst (reset). 2.2.2. Khối control ( Control Unit) Tín hiệu điều khiển đưa đến từ trạng thái và lệnh hiện tại. Thành phần điều khiển logic là mạch tổ hợp. Có 12 tín hiệu điều khiển như sau. cuu duong than cong . com Hình 2. Thiết kế khối Control Unit  PC.E: enable port of program counter (PC); 4 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 6

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200  Acc.E: enable port of accumulator (Acc);  SR.E: enable port of status register (SR);  IR.E: enable port of instruction register (IR);  DR.E: enable port of data register (DR);  PMem.E: enable port of program memory (PMem);  DMem.E: enable port of data memory (DMem);  DMem.WE: write enable port of data memory (DMem);  ALU.E: enable port of ALU;  ALU.Mode: mode selection port of ALU;  MUX1.Sel: selection port of MUX1;  MUX2.Sel: selection port of MUX2; 2.2.3. ALU Unit ALU được sử dụng để thực hiện các phép tính cho lệnh hiện tại. Thành phần là mạch tổ hợp. ALU bao gồm các cổng dưới đây. cuu duong than cong . com Hình 3. Thiết kế khối ALU 5 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 7

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200  ALU operand 1 port (8 bit, input, kí hiệu là ALU.Operand1): được kết nối tới Acc.  ALU operand 2 port (8 bit, input, kí hiệu là ALU.Operand2): được kết nối tới MUX2.Out.  ALU enable port (1 bit, input, kí hiệu là ALU.E): được kết nối tới control logic.  ALU mode port (4 bit, input, kí hiệu là ALU.Mode): được kết nối tới control logic.  Current flags port (4 bit, input, kí hiệu là ALU.CFlags): được kết nối tới SR.  ALU output port (8 bit, output, kí hiệu là ALU.Out): được kết nối tới DMem.DI.  ALU flags port (4 bit, output, kí hiệu là ALU.Flags): Z (zero), C (carry), S(sign), O (overflow) được kết nối tới SR. Trường Chức năng Chú thích mode 0000 ALU.Out = Operand1 + Operand2 Phép cộng 0001 ALU.Out = Operand1 – Operand2 Phép trừ 0010 ALU.Out = Operand1 Lấy ra toán hạng 1 0011 ALU.Out = Operand2 Lấy ra toán hạng 2 0100 ALU.Out = Operand1 & Operand2 AND bit 0101 ALU.Out = Operand1 | Operand2 OR bit 0110 ALU.Out = Operand1 ^ Operand2 XOR bit 0111 ALU.Out = Operand2 – Operand1 Phép trừ 1000 ALU.Out = Operand2 + 1cuu duong than cong . comTăng 1 đơn vị 1001 ALU.Out = Operand2 - 1 Giảm 1 đơn vị 1010 ALU.Out = (Operand2 << Operand1[2:0]) | Quay trái (Operand2 >> (8 – Operand1[2:0])) 1011 ALU.Out = (Operand2 >> Operand1[2:0]) | Quay phải (Operand2 << (8 – Operand1[2:0])) 1100 ALU.Out = Operand2 << Operand1[2:0] Dịch trái logic 1101 ALU.Out = Operand2 >> Operand1[2:0] Dịch phải logic 1110 ALU.Out = Operand2 >>> Operand1[2:0] Dịch phải số học 1111 ALU.Out = 0 – Operand2 Lấy mã bù 2 Bảng 1. Bảng chức năng của ALU theo từng chế độ 6 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 8

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 2.2.4. Program Memory Vi xử lý có 256 ô nhớ trên program memory mà lưu trữ program instructions, kí hiệu là Pmem. Mỗi ô nhớ là 12 bits, ô nhớ thứ i là Pmem [i]. Bộ nhớ chương trình có các cổng input và output như sau: Hình 4. Thiết kế khối Program memory  Enable port (1 bit, input, kí hiệu là Pmem.E): Nếu bằng 1, ô nhớ được chỉ định bởi địa chỉ sẽ được đọc ra.  Address port (8 bit, input kí hiệu là Pmem.Addr): cho biết địa chỉ lệnh được đọc ra, đượcuu duong than cong . comc kết nối với PC.  Instruction port (12 bit, output kí hiệu là Pmem.I): lệnh được đọc ra, được kết nối với IR. Ba cổng tiếp theo được sử dụng để tải chương trình vào bộ nhớ, không được sử dụng cho lệnh thực thi:  Load enable port (1 bit, input, kí hiệu là Pmem.LE): Nếu bằng 1, ô nhớ được chỉ định bởi địa chỉ sẽ cho phép tải chương trình (load instruction input port)  Load address port (8 bit, input, kí hiệu là Pmem.LA): chỉ rõ địa chỉ ô nhớ lệnh được tải. 7 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 9

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200  Load instruction port (12 bit, input, kí hiệu là Pmem.LI): chỉ rõ lệnh được tải. Ví dụ, nếu địa chỉ được cung cấp là 8’b0000_0011 và enable là 1 thì ô nhớ thứ 4 sẽ được đọc trên instruction port. 2.2.5. Data Memory Vi xử lý có 16 ô nhớ trong data memory được kí hiệu là Dmem. Mỗi ô nhớ là 8 bits, ô nhớ thứ i được kí hiệu là Dmem[i]. Data memory có các cổng input và output sau. cuu duong than cong . comHình 5. Thiết kế khối Data Memory  Enable port (1 bit, input, kí hiệu là Dmem.E): tín hiệu enable, nếu bằng 1 ô nhớ được chỉ định sẽ cho phép tải dữ liệu có thể là đọc hoặc ghi.  Write enable port (1 bit, input, kí hiệu là Dmem.WE): tín hiệu enable cho việc ghi, tức là nếu bằng 1 thì sẽ cho phép ghi theo địa chỉ được truyền bào.  Address port (4 bit, input, kí hiệu là Dmem.Addr): chỉ rõ địa chỉ được đọc ra, được kết nối tới IR[3:0].  Data input port (8 bit, input kí hiệu là Dmem.DI): giá trị được ghi, kết nối với ALU.Out. 8 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 10

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200  Data ouput port (8 bit, output, kí hiệu là Dmem.DO): giá trị ô nhớ được đọc ra, được kết nối với MUX2.In1 Ví dụ nếu địa chỉ truyền vào 8’0000_0011, input port là 8’0000_0000, enable được đặt bằng 1 và write enable được set là 1 thì ô nhớ thứ 4(011) sẽ được ghi giá trị là 8’0000_0000. 2.2.6. MUX and adder PC adder PC adder được dùng để dời tới lệnh tiếp theo. Thành phần là mạch tổ hợp. Nó có các cổng sau:  Adder input port (8 bit, input kí hiệu là Adder.In): Kết nối tới PC.  Adder output port (8 bit, output, kí hiệu là Adder.Out): được kết nối tới MUX1.In2 MUX1 Mux1 được sử dụng để chọn nguồn cho việc cập nhật PC. Nếu lệnh hiện tại không rẽ nhánh hoặc rẽ nhánh nhưng không được thực hiện, PC = PC + 1. Nếu không thì PC sẽ đươc nhảy đến địa chỉ mới. Nó có các cổng sau:  MUX1 input 1 port (8 bit, input, kí hiệu là MUX1.In1): được kết nối tới IR[7:0]  MUX1 input 2 port (8 bit, input, kí hiệu là MUX1.In2): được kết nối tới Adder.Out.cuu duong than cong . com  MUX1 selection port (1 bit, input, kí hiệu là MUX1.Sel): kết nối tới bộ điều khiển control logic.  MUX1 output port (1 bit, output, kí hiệu là MUX1.Out): kết nối tới PC. MUX2 MUX2 được sử dụng để lựa chọn nguồn cho toán hạng 2. Nếu là lệnh loại M thì sẽ từ data memory, nếu là lệnh loại I thì sẽ từ IR [7:0]. Nó có các cổng sau:  MUX2 input 1 port (8 bit, input, kí hiệu là MUX2.In1): được kết nối tới IR [7:0]. 9 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 11

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200  MUX2 input 2 port (8 bit, input, kí hiệu là MUX2.In2): được kết nối tới DR.  MUX2 selection port (1 bit, input, kí hiệu là MUX2.Sel): được kết nối tới control logic.  MUX2 output port (8 bit, output, kí hiệu là MUX2.Out): được kết nối tới ALU.Operand2. 2.2.7. Registers Vi điều khiển gồm 3 thanh ghi nổi: 1. Program Counter (8 bit, kí hiệu là PC): Bao gồm địa của lệnh đang thực thi hiện tại. 2. Accumulator (8 bit, kí hiệu là Acc): Lưu trữ kết quả và một toán hạng của phép toán logic. 3. Status Register (4 bit, ký hiệu là SR): Lưu trữ trạng thái có 4 bít, đó là Z, C, S, O. a. Z (zero flag, SR[3]): 1 nếu kết quả là zero và ngược lại. b. C (carry flag, SR[2]): 1 nếu có carry và ngược lại c. S(sign flag, SR[1]): 1 nếu là âm, và ngược lại d. O(overflow flag, SR[0]): 1 nếu kết quả bị tràn bit và ngược lại. Mỗi thành phần trong register đều có một tín hiệu điều khiển bất cứ khi nào giá trị thanh ghi cần được cập nhật lại trong khi chuyển trạng thái. Chúng được ký hiệu là PC.E, Acc.E và SR.E. Vi xử lý có 2 thanh ghicuu duong than cong . comẩn (không thể thay đổi qua việc lập trình): 1. Instruction Register (12 bit, kí hiệu là IR): bao gồm lệnh đang thực thi hiện tại. 2. Data Register (8 bit, kí hiệu là DR): bao gồm các toán hạng đọc từ data memory. Tương tự như vậy, mỗi thanh ghi trong đó cũng có tín hiệu enable như một cờ dùng cho bất cứ khi nào giá trị thanh ghi thay đổi. Chúng được kí hiệu là IR.E và DR.E. 10 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 12

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 2.3. TẬP LỆNH Mỗi lệnh gồm 12 bit. Có 3 loại lệnh được mã hoá như sau: M type: Quan hệ giữa một toán hạng tích luỹ và một toán hạng trên data memory. Kết quả được lưu trữ tại toán hạng tích luỹ hoặc data memory (cùng địa chỉ với toán hạng thứ 2). Hình 6. Cấu trúc của lệnh loại M cuu duong than cong . com 11 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 13

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 Bảng 2. Danh sách các lệnh loại M I type: Quan hệ giữa một toán hạng tích luỹ và một toán hạng trực tiếp (trên lệnh). Kcuu duong than cong . comết quả được lưu tại toán hạng tích luỹ. 12 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 14

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 Hình 7. Cấu trúc lệnh của tập lệnh loại I cuu duong than cong . com 13 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 15

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 Bảng 3. Danh sách các lệnh loại I S type: Lệnh đặc biệt. Không cần có toán hạng (nop). Chỉ có một lệnh NOP: 0000_0000_0000. Các lệnh còn được chia thành 4 nhóm như sau. 1. Lệnh ALU: sử dụng ALU để tính toán kết quả. 2. Lệnh rẽcuu duong than cong . comnhánh không điều kiện: lệnh GOTO. 3. Lệnh rẽ nhánh có điều kiện: Lệnh JZ, JC, JS, JO. 4. Lệnh loại đặc biệt: NOP 14 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 16

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 III. CÁC CỔNG GIAO TIẾP VÀ BIỂU ĐỒ TIMING 3.1. CỔNG GIAO TIẾP Microprocessor bus interface Signal Width Active logic Describtion level CLK 1 Clock RST 1 1 Reset PC_E 1 1 Program counter enable Acc_E 1 1 Thanh ghi Accumulator enable SR_E 1 1 Thanh ghi Status register enable IR_E 1 1 Thanh ghi lệnh enable DR_E 1 1 Thanh ghi data enable PMem_E 1 1 Bộ nhớ lệnh enable DMem_E 1 1 Bộ nhớ data enable DMem_WE 1 1 Bộ nhớ data write enable ALU_E 1 1 ALU enable MUX1_Sel 1 Cổng select MUX1 MUX2_Sel 1 Cổng select MUX2 PMem_LE 1 1 Bộ nhớ lệnh Load enable ALU_Mode 2 Chế độ của ALU IR 12 Thanh ghi lệnh SR 8 Thanh ghi cờ DI 8 Đường data vào DO 8 Đường data ra cuu duong than cong . comBảng 4. Các cổng giao tiếp của MCU 15 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Page 17

goupee.vn goupee.com PROJECT GROUP NO.3 VLSI 2018 105200 3.2. SƠ ĐỒ TIMING Giải thích về timing của MCU: sau 9 chu kì clock đầu để load chương trình vào trong program memmory. MCU bắt đầu FETCH : lấy lệnh từ program memory và thực hiện từng lệnh từ địa chỉ d1 đến địa chỉ d9. Từ đó ở mỗi lệnh MCU lại DECODE và EXECUTE theo từng lệnh lần lượt. Hình 8. Sơ đồ timing khi chạy các bước chính IV. KẾT QUẢ Chúng tôi đã thử nghiệm kết quả và các tín hiệu thu được từ phần mềm ModelSims dựa vào quá trình code đã synthesize qua phần mềm Quartus II. cuu duong than cong . com Hình 10. Ảnh kết quả mô phỏng tín hiệu trên phần mềm modelsims 16 fb.com/goupee.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt

Showing the first 17 pages. Download the document to see it all.

Comments (0)

Sign in to join the discussion

No comments yet. Be the first!