THIẾT KẾ RISC MICROCONTROLLER SỬ DỤNG VHDL
ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 1 Trường Đại học Bách Khoa Tp HCM Khoa Điện-Điện tử ĐỒ ÁN MÔN HỌC ĐIỆN TỬ VIỄN THÔNG 1 ĐỀ TÀI: THIẾT KẾ RISC MICROCONTROLLER SỬ DỤNG VHDL GVHD: HỒ TRUNG MỸ SVTH : PHẠM HƯNG THỊNH MSSV : 40202563 ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 2 Lời mở đầu Hiện nay, công nghệ vi mạch phát triển rất nhanh và tạo ra rất nhiều hướng phát triển mới cho tương lai. Điển hình cho sự phát triển nay là xuất hiện của các IC logic lập trình được như PLA, FPGA, ASIC các IC nay có mức độ tích hợp ngày càng cao(có thể chứa trên 1 triệu Transitor đối với loại VLSI), các ứng dụng của nó cũng trở nên phổ biến hơn.Do mức độ tích hợp của các IC cao dẫn theo sự phức tạp trong cấu trúc của nó,chinh vì vây yêu cầu đặt ra là cần có 1 công cụ vạn năng để hỗ trợ cho việc thiết kế số. Từ đó dẫn đến sự ra đời của các ngôn ngữ mô tả phần cứng như VHDL,Verilog .Nó giúp cho các nhà thiết kế dễ dàng hơn trong việc thiết kế hệ thống số dựa trên các IC lập trình được này. Em chọn đề tài “Thiết kế Risc Microcontroller dùng VHDL” với mục đích là tìm hiểu về các IC Logic lập trình được, cách thức lập trình mô tả phần cứng trên ngôn ngữ VHDL, và cấu trúc, họat động của 1 MCU dạng RISC. Em xin chân thành cảm ơn các thầy cô trong trường Đại học Bách khoa TPHCM nói chung và các thầy cô trong khoa Điện- Điện tử nói riêng đã truyền dạy những kinh nghiệm quý báu và giúp đở em trong suốt quá trình học tập. Đặc biệt, em xin gửi lời cảm ơn chân thành đến thầy HỒ TRUNG MỸ người đã tận tình giúp đở em hoàn thành đồ án này. ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 3 Mục lục trang I > Giới Thiệu đề tài 4 II> KHÁI QUÁT VỀ RISC VÀ CISC 5 III> TẬP LỆNH 6 IV > PIPELINE PROCESSING 12 V> SƠ ĐỒ KHỐI CỦA THIẾT KẾ RISC 14 VI> THIẾT KẾ ĐƯỜNG DỮ LIỆU (DATAPATH) 16 VII> THIẾT KẾ ĐƠN VỊ ĐIỀU KHIỂN (CONTROL UNIT) 25 VIII> CHƯƠNG TRÌNH VHDL VÀ KẾT QUẢ MÔ PHỎNG 28 ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 4 I> GIỚI THIỆU ĐỀ TÀI 1. Mục đích cùa đồ án: Tìm hiểu cấu trúc, và hoạt động của 1 RISC Microcontroller cơ bản, Thi ết kế và dùng ngôn ngữ VHDL để mô tả RISC MCU. 2. Phạm vi thiết kế của đồ án: Thiết kế chỉ thực hiện các chức năng cơ bản của 1 MCU như: thưc hiện các phép tóan cộng trừ, logic, dịch, di chuyển dữ liệu, rẽ nhánh không điều kiện và có điều kiện, gọi hàm, và các lệnh tác động lên bit. Thiết kế dựa trên tập lệnh của Atmel AVR AT90S1200. Bằng cách này, Thiết kế có thể sử dụng các công cụ assempler, simulater do Atmel cung cấp. Do giới hạn của đề tài nên RISC MCU không hỗ trợ ngắt ngoài, Timer, Port IO 2 chiều, analog comparator, điện trở kéo lên bên trong, watchdog reset . như AVR AT90s1200. Thiết kế sử dụng phần mềm MAX + plus II để thực hiện và mô phỏng thiết kế. MAX + plus II là phần mềm do ALTERA phát triển. Nó có một số Modul quan trọng cho thiết kế, ví dụ như Compiler, Simulater, Wavefrom editor, và Programmer . ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 5 II> KHÁI QUÁT VỀ RISC VÀ CISC 1. Comples Instruction Set Computer (CISC) Những năm trước đây, Tập lệnh của máy tính có số lượng lệnh ít và đơn giản. Với sự phát triển của kỹ thuật và yêu cầu của các ứng dụng khác nhau, tập lệnh của máy tính ngày càng tăng về số lượng lẫn độ phức tạp( sử dụng nhiều loại dữ liệu và nhiều mode định địa chỉ). Một máy tính có tập lệnh lớn và phức t ạp được gọi là CISC(Complex Intrucstion Set Computer). Đặc tính cơ bản của cấu trúc CISC: - Có số lượng lệnh rất nhiều, thông thường từ 100 tới 250 lệnh. - Một số lệnh thực hiện các chức năng đặc biệt và thường không được sử dụng. - Rất nhiều chế độ định địa chỉ, thường có khoảng từ 5->20 chế độ định địa chỉ. - Cấu trúc lệnh không cố định và dài, thường từ 2 tới 6 bytes. - Lệnh có tóan hạng chứa trong ô nhớ. 2. Reduce Instruction Set Computer (RISC) Vào đầu năm 1980, trong các thống kế của hệ thống máy tính, người ta thấy hầu hết 80% số lệnh trong tập lệnh ít được sử dụng. Vì vậy để tăng hiệu quả cho ứng dụng và việc thiết kế, người ta đặt ra vấn đề về một máy tính có tập lệnh được rút gọn và đơn giản được gọi là RISC (Reduce Intruction Set Computer). Đặc tính cơ bản của cấu trúc RISC: - Chu kỳ l ệnh được chia thành 2 chu kỳ: tìm nạp lệnh và thực thi lệnh. - Lệnh được thực thi trong 1 chu kỳ xung clock. - Lệnh có chiều dài cố định(16 bit hay 32 bit), và có định dạng dễ giải mã. - Tập lệnh có số lượng lệnh ít. - Ít chế độ định địa chỉ. - Hạn chế lệnh truy xuất bộ nhớ, chỉ truy xuất thông qua con trỏ dữ liệu. - Tất cả các lệnh được thự hiện thông qua các thanh ghi của CPU. - Th ường sử dụng mạch logic để điều khiển thực thi lệnh hơn là sử dụng vi chương trình (microprogram) như CISC. - Số lượng thanh ghi đa năng khá nhiều (ít nhất là 32 Register). ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 6 III> TẬP LỆNH: 1. Tóm tắt Tập lệnh Thiết kế dựa trên tập lệnh của Atmel AVR AT90S1200. Bằng cách này, Thiết kế có thể sử dụng các công cụ assempler, simulater do Atmel cung cấp. Tập lệnh được chia thành 4 nhóm lệnh:(xem bảng 3.1) - Nhóm lệnh số học và logic: gồm các lệnh tính tóan số học và logic - Nhóm lệnh rẽ nhánh: gồm các lệnh nhảy không điều kiện, nhảy có điều kiện theo các cờ trạng thái, lệnh gọi hàm và Return. - Nhóm lệnh truyền dữ liệu: gồ m các lệnh di chuyển dữ liệu giữa các thanh ghi, ô nhớ RAM và Port IO bên ngoài. - Nhóm lệnh về bit: gồm các lệnh bit như xóa, đặt bit, lệnh dịch xoay . 2. Chế độ định Địa chỉ (Addressing Modes): Theo thiết kế thì RISC có 6 chế độ định địa chỉ. RA, RB được xem như là tóan hạng đích và toán hạng nguồn. 2.1 Định địa chỉ trực tiếp thanh ghi đơn: Lệnh có một toán hạng là RA: vừa là thanh ghi nguồn vừa là thanh ghi đích. Ví dụ như lệnh: dịch, xoay, set bit . 2.2 Định địa chỉ trực tiếp thanh ghi đôi: Lệnh có hai toán hạng là RA và RB. Sau khi tính tóan kết quả được ghi vào RA.Ví dụ như lệnh tóan học và logic… 2.3 Định địa chỉ I/O trực tiếp : Toán hạng là I/O register. Địa chỉ được chứa trong 6 bit trong từ lệnh. Cách định địa chỉ này được sử dụng trong lệnh IN và OUT. 2.4 Định địa chỉ dữ liệu gián tiếp: Tóan hạng là ô nhớ Ram có địa chỉ chứa trong thanh ghi Z. Cách định địa chỉ được sử dụng trong lệnh LD và St. 2.5 Định địa chỉ tương đối bộ nhớ chương trình: Cách định địa ch ỉ này được sử dụng trong lệnh RJMP, RCALL. Địa chỉ lệnh kế được tính bằng PC + Offset. Offset được chứa trong từ lệnh. 2.6 Định địa chỉ tức thời: Tóan hạng là hằng số 8 bit đựơc cho trong từ lệnh ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 7 Bảng 3.1 Tóm tắt Tập lệnh Mnemonic Operation Flags ARITHMETIC AND LOGIC INSTRUCTIONS ADD Add Two Registers S,Z,C,N,V,H ADC Add with Carry Two Registers S,Z,C,N,V,H SUB Subtract Two Registers S,Z,C,N,V,H SUBI Subtract Constant from Register S,Z,C,N,V,H SBC Subtract with Carry Two Registers S,Z,C,N,V,H SBCI Subtract with Carry Constant from Register S,Z,C,N,V,H AND Logical AND Registers S,Z,N,V ANDI Logical AND Register and Constant S,Z,N,V OR Logical OR Registers S,Z,N,V ORI Logical OR Register and Constant S,Z,N,V EOR Exclusive OR Registers S,Z,N,V COM One’s Complement Register S,C,Z,N,V NEG Negate (2’s Complement) Register S,C,Z,N,V,H SBR Set Bit(s) in Register S,Z,N,V CBR Clear Bit(s) in Register S,Z,N,V INC Increment S,Z,N,V DEC Decrement S,Z,N,V TST Test for Zero or Minus S,Z,N,V CLR Clear Register S,Z,N,V SER Set Register None BRANCH INSTRUCTIONS RJMP Relative Jump None RCALL Relative Subroutine Call None RET Subroutine Return None CP Compare (Rd - Rr) S,C,Z,N,V,H CPC Compare with Carry (Rd - Rr - C) S,C,Z,N,V,H CPI Compare Register with Immediate (Rd – K) S,C,Z,N,V,H BRBS Branch if Status Flag Set None BRBC Branch if Status Flag Cleared None BREQ Branch if Equal (Z = 1) None BRNE Branch if Not Equal (Z = 0) None BRCS Branch if Carry Set (C = 1) None BRCC Branch if Carry Cleared (C = 0) None BRSH Branch if Same or Higher (C = 0) None BRLO Branch if Lower (C = 1 None BRMI Branch if Minus (N = 1) None ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 8 BRPL Branch if Plus (N = 0) None BRGE Branch if Greater of Equal, Signed (S = 1) None BRLT Branch if Less than Zero, Signed (S = 0) None BRHS Branch if Half Carry Set (H = 1) None BRHC Branch if Half Carry Cleared (H = 0) None BRVS Branch if Overflow Flag is Set (V = 1) None BRVC Branch if Overflow Flag is Cleared (V = 0) None DATA TRANSFER INSTRUCTIONS MOV Move Between Registers None LDI Load Immediate to Register None LD Z Load Indirect with Z-Pointer None LD Z+ Load Indirect and Post-Increment with Z-Pointer None LD –Z Load Indirect and Pre-Decrement with Z-Pointer None ST Z Store Indirect with Z-Pointer None ST Z+ Store Indirect and Post-Increment with Z-Pointer None ST -Z Store Indirect and Pre-Decrement with Z-Pointer None IN In Port to Register None OUT Out Register to Port None BIT INSTRUCTIONS SBI Set Bit in I/O Register None CBI Clear Bit in I/O Register None LSL Logical Shift Left S,C,Z,N,V LSR Logical Shift Right S,C,Z,N,V ROL Rotate Left through Carry S,C,Z,N,V ROR Rotate Right through Carry S,C,Z,N,V ASR Arithmetic Shift Right S,C,Z,N,V SWAP Swap Nibbles None BSET Flag Set Any BCLR Flag Clear Any SEC Set Carry C CLC Clear Carry C SEN Set Negative Flag N CLN Clear Negative Flag N SEZ Set Zero Flag Z CLZ Clear Zero Flag Z SES Set Signed Test Flag S CLS Clear Signed Test Flag S SEV Set Two’s Complement Overflow V CLV Clear Two’s Complement Overflow V SHE Set Half-carry Flag in SREG H CLH Clear Half-carry Flag in SREG H NOP No Operation None ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 9 3. Các Định dạng Lệnh: Lệnh của RISC có chiều dài cố định và dễ giải mã. Trong Thiết kế này, lệnh có chiều dài là 16 bit và có những định dạng sau đây để tiện cho việc giải mã. Đối với lệnh có 2 toán hạng là thanh ghi đa dụng, mỗi toán hạng cần 4 bit d(destination) và r(soure) ,ứng với địa chỉ 32 thanh ghi đa năng, để định địa chỉ thanh ghi. Ví dụ như lệnh ADD, AND . Đối với các lệnh có 1 toán hạng là thanh ghi, cầ n 4 bit d để định địa chì cho tóan hạng đích và nguồn. ví dụ như các lệnh NEG, CMP . Đối với các lệnh có tóan hạng là hằng số (định địa chỉ tức thời), thì từ lệnh phải chứa 8 bit K của hằng số và 4 bit d địa chỉ của thanh ghi nguồn. Ví dụ như các lệnh ANDI, ADDI . Đối với các lệnh rẽ nhánh không điều kiện như lệnh RJMP,RCALL thì cần 9 bit K làm giá trị bù 2 của Offset. Đối với các lệnh rẽ nhánh có điều kiện như lệnh BRBS, BRBC . thì cần 7 bit K làm giá trị bù 2 của Offset và thêm 3 s bit để chọn điều kiện nhảy, chọn 1 trong 8 cờ trạng thái Đối với các lệnh có toán hạng là Port I/O thì từ lệnh có chứa 4 bit A để xác định địa chỉ I/O, và 4 bit d để xác định tóan hạng đích, ví dụ như lệnh IN, OUT ., hoặc 3 bit b để xác định 1 trong 8 bit I/O cần tác động, ví dụ như lệnh SBI,SBI. d d d d r r r r 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 d d d d 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 d d d d K K K K K K K K 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 K K K K K K K K K 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 K K K K K s s s K K 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 ĐAMH Điện Tử Viễn Thông II ___________________________________ GVHD: Hồ Trung Mỹ _____________________________________*******______________________________________ Thiết kế RISC microcontroller _________________________________ SVTH: Phạm Hưng Thịnh _____________________________________*******______________________________________ 10 Đối với các lệnh tác động đến bit của thanh ghi trạng thái ví dụ như lệnh BCLR, BSET thì cần 3 bit s để chọn 1 trong 8 bit của thanh ghi. 4, Mã máy: Trong tập lệnh có thể ghép các lệnh tương đương để có thể sử dụng chung mã máy. Chính vì vậy mà tập mã máy sẽ được rút gọn hơn giúp cho việc giải mã đơn giản hơn. bảng 3.2 chỉ ra các lệnh tương đương sử dụng chung mã máy và bảng 3.3 là bảng tập mã máy ADD LSL ADC ROL AND TST EOR CLR ORI SBR ANDI CBR LDI SER BCLR CLI, CLT, CLH, CLS, CLV, CLN, CLZ, CLC BSET SEI, SET, SEH, SES, SEV, SEN, SEZ, SEC BRBC BRID, BRTC, BRHS, BRGE, BRVC, BRPL, BRNE, BRCC, BRSH BRBS BRIE, BRTS, BRHS, BRLT, BRVS, BRMI, BREQ, BRCS, BRLO Bảng 3.2 Các lệnh tương đương Ví dụ: lệnh ADD và lệnh LSL. Ta thấy lệnh LSL là lệnh dịch trái tương ứng với việc nhân 1 số với 2. Nếu lệnh ADD thực hiện cộng 2 số hạng giống nhau sẽ tương đương với việc nhân 1 số với 2. Như vậy 2 lệnh này tương đương nhau có thể sử dụng chung mã máy. d d d d A A A A 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 A A A A b b b 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 s s s 15 14 13 12 | 11 10 9 8 | 7 6 5 4 | 3 2 1 0 [...]... flip-flop thay vì sử dụng đơn vị điều khiển vi chương trình, chứa trong ROM, như cấu trúc CISC CISC có tập lệnh với các chiều dài lệnh chu kỳ lệnh khác nhau nên đơn vị điều khiển sử dụng ROM vi chương trình để thực hiện thiết kế dễ dàng và mềm dẻo nhưng bất lợi của vi chương trình là làm chậm khả năng thục thi lệnh Đối với RISC, các lệnh có chiều dài cố định và thực thi 25 Thiết kế RISC microcontroller. .. _ GVHD: Hồ Trung Mỹ _******* VI> THIẾT KẾ ĐƯỜNG DỮ LIỆU (DATAPATH) Việc thiết kế một MCU được chia thành 2 phần chính là: thiết kế đường dữ liệu và thiết kế Đơn vị điều khiển Đường dữ liệu chịu trách nhiệm về di chuyển và thao tác dữ liệu Nó thực hiện hiện tất cả các họat động chức năng của RISC nên nó phải có khả năng thực hiện tất cả các thao tác được yêu cầu... Execute2 Hình 4.2: Chu kỳ lệnh của MCU không sử dụng PipeLine Ý tưởng của việc sử dụng đường ống ở đây là cho 2 chu kỳ Fetch và Execute cùng họat động song song, có nghĩa là trong 1 chu kỳ xung clock MCU sẽ tìm nạp lệnh mới và thực thi lệnh củ xem hình 4.3, vì vậy để thực hiện một chu kỳ lệnh chỉ tốn 1 xung clock, do đó RISC sẽ hoạt động nhanh hơn 12 Thiết kế RISC microcontroller _ SVTH:... _******* V> SƠ ĐỒ KHỐI CỦA THIẾT KẾ RISC 1 SƠ ĐỒ CHÂN Hình 5.1 sơ đồ chân của RISC Vi điều khiển có 3 port I/O Port B, Port C, Port D, và có 2 chân input là clock và Reset(tích cực thấp) Mỗi Port có 8 bit (theo thiết kế port này chỉ là port xuất) 2 Sơ đồ khối của RISC PC ROM Instruction Register Hình 5.2 Top-level Block of Risc General Register ALU Port A D A T A M U X Port... gặp lệnh số học H= A3B3 + B3(C3’ ) + (C3)’A3 vói A là ORA, B là ORB và C là kết quà 24 Thiết kế RISC microcontroller _ SVTH: Phạm Hưng Thịnh _******* ĐAMH Điện Tử Viễn Thông II _ GVHD: Hồ Trung Mỹ _******* VII> THIẾT KẾ ĐƠN VỊ ĐIỀU KHIỂN (CONTROL UNIT) Đơn vị điều khiển có nhiệm vụ nhận mã lệnh... điều kiện cho lệnh rẽ nhánh Các cờ trong thanh ghi trạng thái: * * * * * * * H S V N Z C bit 6, 7: Không sử dụng Bit 5 – H: Half Carry Flag Bit 4 – S: Sign Bit Bit 3 – V: Two’s Complement Overflow Flag Bit 2 – N: Negative Flag Bit 1 – Z: Zero Flag Bit 0 – C: Carry Flag 20 Thiết kế RISC microcontroller _ SVTH: Phạm Hưng Thịnh _******* ĐAMH Điện... symbol Khi thực hiện lệnh ALU cần phải lựa chọn tóan hạng tác động, thao tác thực thi, và cập nhật cờ trạng thái Vì vậy khối ALU trong thiết kế cũng được chia thành 3 đơn vị con: đơn vị tìm nạp tóan hạng, đơn vị thao tác lệnh, và đơn vị cập nhật cờ trạng thái 21 Thiết kế RISC microcontroller _ SVTH: Phạm Hưng Thịnh _******* ĐAMH Điện Tử Viễn Thông II ... (ORA) Tóan hạng A có thể được nạp từ RA(thanh ghi đa dụng) , not RA(ví dụ dùng trong lệnh COM), Data bus( ví dụ sử dụng trong lệnh tác động bit), và 00h Tín hiệu ASEL có 2 bit để điều khiển chọn giá trị nạp cho tóan hạng A (xem bảng 6.1) Tóan hạng B có thể nạp từ RB(thanh ghi đa dụng) , Data bus, giá trị hằng số cho trong từ lệnh, giá trị 01H (được sử dụng trong lệnh INC, DEC) Tín hiệu BSEL có 2 bit để... tóan học thưc hiện phép cộng, trừ trên 2 tóan hạng, có tín hiệu điều khiển ADD nếu ADD = 1 thực hiện phép cộng, ngược lại thực hiện phép trừ, tín hiệu WCARRY cho phép có sử dụng cờ nhớ vào hay không(xem bảng 6.2) 22 Thiết kế RISC microcontroller _ SVTH: Phạm Hưng Thịnh _******* ĐAMH Điện Tử Viễn Thông II _ GVHD: Hồ Trung Mỹ ... thì: Do đường ống chỉ có 2 đơn vị hoạt động song song Khi lệnh kế tiếp thực thi đang vào đường ống thì lệnh rẽ nhánh cũng đang thực thi, nếu lệnh rẽ nhánh có yêu cầu rẽ nhánh thì PC sẽ phải nạp giá trị mới và tìm nạp lệnh tại điểm nhảy đến thay vì nạp lệnh kế để đưa vào đường ống như vậy việc nghẽn đường ống đã được khắc phục 13 Thiết kế RISC microcontroller _ SVTH: Phạm Hưng Thịnh