Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 51 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
51
Dung lượng
1,08 MB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH KHOA KỸ THUẬT ĐIỆN – ĐIỆN TỬ I *** BÁO CÁO MÔN ĐỒ ÁN THIẾT KẾ HỆ THỐNG SỐ Đề tài: THỰC HIỆN THIẾT KẾ CPU CỦA VI XỬ LÝ BIT SỬ DỤNG NGÔN NGỮ VHDL HOẶC VERILOG TRÊN FPGA Giảng viên hướng dẫn Nhóm tín Nhóm tập lớn Sinh viên thực TIEU LUAN MOI download : skknchat123@gmail.com MỤC LỤC TIEU LUAN MOI download : skknchat123@gmail.com LỜI MỞ ĐẦU Trong thời đại cơng nghệ thơng tin phát triển chóng mặt, với ứng dụng thực tế đem lại hiệu lợi ích cho người người cơng nghệ thơng tin dần thay sức lao động đồng thời nâng cao hiệu hoạt đông lĩnh vực sống Nhắc đến Công nghệ FPGA có lẽ khơng cịn xa lạ chúng ta, lẽ ứng dụng tràn ngập khắp ngóc ngách sống, kể lĩnh vực người khó khơng thể tiếp xúc lĩnh vực nghiên cứu, chế tạo chíp… Nghiên cứu chế tạo chíp việc làm cần thiết giai đoạn cơng nghiệp hóa Để chế tạo loại chíp có tác dụng mong muốn, đòi hỏi người phát triển, có nhiều ứng dụng đời sống, nghiên cứu khoa học Và thành phần quan trọng chíp CPU CPU viết tắt chữ Central Processing Unit : đơn vị xử lí trung tâm CPU xem não bộ, phần tử cốt lõi chíp Nhiệm vụ CPU xử lý chương trình vi tính kiện Vì nhóm chúng em chọn đề tài “Thực thiết kế CPU vi xử lý bit sử dụng ngôn ngữ VHDL Verilog FPGA” TIEU LUAN MOI download : skknchat123@gmail.com I TỔNG QUAN VỀ FPGA 1.1 Cấu trúc chung FPGA Trong tồn phát triển công nghệ từ PAL lên GAL CPLD, có xu hướng phát triển khác dựa cơng nghệ mảng cổng, mảng cổng lập trình dạng trường, FPGA (Field- Programmable Gate Array) Từ 1980, công ty sản xuất PLD hàng đầu đẩy mạnh trình nghiên cứu FPGA nhanh chóng cho hệ FPGA với số lượng cổng tốc độ ngày cao.các FPGA có số lượng cổng đủ lớn để thay hệ thống bao gồm lõi CPU, Bộ điều khiển nhớ (Memory Controller), ngoại vi SPI,Timer, I2C, GPIO, PWM, Video/Audio Controller… (nghĩa tương đương với SoC đại) Configur a ble Logic I/O Bloc k BLOCK RAMS I/O BLOCK RAMS Programm a ble Hình 1.1: Sơ đồ khối FPGA TIEU LUAN MOI download : skknchat123@gmail.com Hình 1.2: Vị trí chân tín hiệu (pin) CLB FPGA gồm có (hình 1.1): CLBs (configurable Logic Blocks): khối logic cấu hình được, thành phần tiêu chuẩn Trong hầu hết FPGA, CLB chứa số mảnh, mà mảnh lại chứa số (thường 4) ô logic (logic cell) với số thành phần nhớ (Flip-Flop) dồn kênh (Mux) không dùng FF Mỗi logic cấu hình để thực chức logic (như AND, OR, NOT) tín hiệu số nhờ sử dụng bảng LUT (look-up Table) Các CLB liên kết với qua mạng liên kết lập trình (Programmable Interconnect hay routing) Interconnect hay Routing: mạng liên kết hay định tuyến, ma trận chuyển mạch lập trình - PSM (Programmable Switch Matrix) để hình thành đơn vị thực chức phức tạp IOBs (Input/Output Blocks): khối vào/ra nằm bao xung quanh miếng FPGA nối với chân tín hiệu vào/ra (I/O pin) Như chân I/O FPGA lập trình để đảm bảo giao tiếp điện cần thiết cho kết nối FPGA với hệ thống mà thành phần (hình 1.3) Block RAM: khối RAM, băng nhớ bên FPGA TIEU LUAN MOI download : skknchat123@gmail.com Các FPGA khác có số lượng logic, kích cỡ số lượng block RAM, MAC khác Các FPGA sử dụng hệ thống lai (hybrid system) thường có khoảng 100K-200K logic, 500KB RAM bên 100 MACs Hệ thống lai sử dụng FPGA với 1000 khối I/O tương ứng với 1000 I/O pin để đảm bảo giao tiếp với hệ thống chủ, với nhớ cục nối trực với FPGA Các FPGA thường lập trình sau hàn gắn bảng mạch in, tương tự CPLD lớn Nhưng liệu cấu hình FPGA bị ngừng cấp nguồn (mất điện) giống RAM máy tính Do đó, muỗi lần ngắt nguồn bật lại ta phải nạp lại tệp cấu hình vào FPGA Muốn lưu giữ lại cấu hình lập trình cho FPGA ta phải mắc thêm PROM hay EPROM Bộ nhớ có nhiệm vụ lưu tệp cấu hình dạng nhị phân (bitstream hay bit file) tự động nạp liệu cấu hình lại cho FPGA bật nguồn, dù có ngắt nguồn FPGA “khơng bị mất” liệu Các phiên EEPROM có thể lập trình hệ thống (hay mạch), thường thơng qua giao tiếp JTAG Tệp cấu hình chứa thiết lập cho CLB, PSM, MAC, I/O thành phần cấu hình khác FPGA Các FPGA sử dụng hệ thống máy tính lai lập trình lại vơ số lần Thời gian tải cấu hình thường chưa đến giây Một số FPGA có khả hoạt động chuyển đến cấu hình nạp trước vào thiết bị Một số FPGA cho phép cầu hình lại phần thiết bị Do FPGA có số lượng lớn khối logic nên có nhiều tài nguyên để thực nhiều chức tốn học chun dụng phức tạp.Vì FPGA phù hợp cho thiết kế phức tạp so với CPLD Nhìn chung CPLD lựa chọn tốt cho ứng dụng tổ hợp, FPGA phù hợp cho máy trạng thái lớn (như vi xử lý) FPGA có phần tử logic chạy theo dạng song song Còn vi điều khiển dựa cấu trúc CPU thực thi theo mã lệnh theo dạng FPGA dùng ngôn ngữ lập trình phần cứng (Verilog, VHDL) lập trình FPGA gọi lập trình phần cứng Lập trình vi điều khiển lập trình phần mềm phần cứng có sẵn 1.2 Định tuyến FPGA Định tuyến FPGA bao gồm khối chuyển mạch (SB) dây nối Định tuyến đảm bảo kết nối khối I/O khối logic khối logic với Kiểu kiến trúc định tuyến định vùng định tuyến mật độ khối logic Khối chuyển mạch nằm giao kênh định tuyến dọc (vertical routing channel) ngang (horizontal routing channel) Hình 1.7: Kết nối khối chuyển mạch TIEU LUAN MOI download : skknchat123@gmail.com Nói chung, định tuyến FPGA khơng có phân đoạn Nghĩa là, đoạn dây nối trải rộng khối logic trước kết thúc khối (hay hộp) chuyển mạch, mà khối chuyển mạch có số chuyển mạch lập trình Kiến trúc định tuyến Xilinx FPGA Các nghiên cứu hàn lâm sử dụng mơ hình kiến trúc chung đơn giản Xilinx FPGA cho hình 1.8 Kiến trúc chung Xilinx FPGA gồm có mảng hai chiều khối logic lập trình CLB (configurable Logic Block), với kênh định tuyến ngang dọc hàng cột CLB Mỗi CLB có đầu vào đầu ra, tất khối logic giống Hình 1.8: Kiến trúc đơn giản Xilinx FPGA Các tài nguyên định tuyến Xilinx FPGA gồm: Các khối kết nối (Connection Block): khối kết nối C nối dây dẫn kênh định tuyến với chân tín hiệu CLB Có hai đặc tính ảnh hướng đến khả định tuyến thiết kế: tính linh hoạt, Fc, số dây dẫn mà tín hiệu CLB kết nối; cấu hình, mẫu chuyển mạch tạo lập kết nối (đặc biệt giá trị Fc thấp) TIEU LUAN MOI download : skknchat123@gmail.com Các khối chuyển mạch (Switch Block): khối chuyển mạch S cho phép dây dẫn chuyển mạch dây dọc ngang Tính linh hoạt, Fs, xác định số lượng đoạn dây nối mà đoạn dây nối vào khối S kết nối Cấu hình khối chuyển mạch S quan trọng chọn hai cấu hình khác có khả định tuyến khác với giá trị tính linh hoạt Fs Hình 1.10: Định tuyến qua khối chuyển mạch TIEU LUAN MOI download : skknchat123@gmail.com Các khối chuyển mạch mà kết nối rãnh miền, chẳng hạn, 0- 0, 1-1, gọi khối chuyển mạch tập hợp hay phẳng hai chiều (Subset switch box hay Planar) Các khối chuyển mạch mà cho phép kết nối với miền khác, chẳng hạn, 0-3, 1-2, gọi khối chuyển mạch Wilton, chúng sử dụng rộng rãi đảm bảo định tuyến linh hoạt Hình 1.11: Các đường dây Xilinx FPGA Các đường dây dài-đơn (Single-length lines): chúng dùng cho kết nối tương đói ngắn CLB chúng trải rộng qua CLB (hình 1.11) Các đường dây dài-gấp đơi (Double-length lines): chúng tương tự đường dây dài-đơn, ngoại trừ đường dây trải rộng qua hai CLB Chúng cho trễ định tuyến nhỏ kết nối dài vừa phải (hình 1.11) Các đường dây dài (Long lines): chúng phù hợp cho kết nối dài trải rộng số CLB (hình 1.11) TIEU LUAN MOI download : skknchat123@gmail.com CB x : Routi xx x x x S General purpose Direct S Hình 1.13: Kiến trúc định tuyến Xilinx FPGA Kiến trúc định tuyến Actel FPGA Kiến trúc Actel FPGA giống với phân kênh mảng cổng Lõi FPGA gồm module logic, LM (hay khối logic, LB) đơn giản sử dụng để thực cổng logic theo yêu cầu, thành phần nhớ Các LM liên kết với nhờ rãnh định tuyến chia theo đoạn (segment) Không giống mảng cổng, độ dài đoạn dây nối xác định trước với thành phần chuyển mạch trở kháng thấp để tạo độ dài định tuyến xác cho tín hiệu liên kết Xung quanh lõi logic giao tiếp với miếng đệm vào/ra (I/O pad) thiết bị Các I/O pad nối với chân tín hiệu (pin) FPGA Giao tiếp bao gồm module vào/ra, I/OM (hay khối, I/OB) thực chuyển đổi kết nối tín hiệu logic từ lõi đến I/O pad TIEU LUAN MOI download : skknchat123@gmail.com Hình 3.3: Sơ đồ khối xử lý lõi-mềm MicroBlaze bên FPGA MicroBlaze có giao tiếp để truy nhập nhớ: bus nhớ cục LMB (Local Memory Bus); Bus ngoại vi chip IBM, OPB (IBM‟s on-chip Peripheral Bus); XCL (Xilinx CacheLink) LMB đảm bảo chu kỳ nhịp đồng hồ truy nhập đến block RAM hai cổng (BRAM) FPGA OPB đảm bảo kết nối với nhớ ngoại vi bên chip bên ngồi chip (hình 3.4) XCL dùng cho kết nối với điều khiển nhớ (MCH OPB DDR) Hình 3.4: Kết nối xử lý lõi-mềm MicroBlaze bên FPGA TIEU LUAN MOI download : skknchat123@gmail.com Các khối nhớ nằm khoảng địa 0x22000000 – 0x2200FFFF Bảng 2.5: Bản đồ xếp địa hệ thống MicroBlaze Khối OPB Ethernet cấu hình cho 10 Mb/s 100 Mb/s phụ thuộc vào mạng ghép nối Khối điều khiển nhớ OPB EMC kết nối với Intel StrataFlash PROM, sử dụng để lưu trữ Bitstream cấu hình phần cứng ứng dụng khởi động nạp (Boootloader) Khối OPB UART Lite cấu hình để sử dụng ngắt Nó thiết lập cổng kết nối DTE tốc độ 115200 b/s Nó yêu cầu sử dụng cáp Null modem MicroBlaze hỗ trợ đến cổng liên kết đơn cổng nhanh FSL, cổng FSL với master slave FSL đơn giản cho kết nối điểm-điểm Các lệnh MicroBlaze rộng 32 bit xác định loại A loại B Các lệnh loại A có ghi tốn hạng nguồn ghi tốn hạng đích Các lệnh loại B có ghi tốn hạng nguồn tốn hạng tức thời 16-bit Có nhóm lệnh: số học, logic, rẽ nhánh, Load/store, đặc biệt MicroBlaze loại xử lý Load/Store, nghĩa load/store liệu từ/đến nhớ Nó khơng thể thực thao tác liệu trực tiếp nhớ, mà phải lấy liệu vào MicroBlaze để thực Các giao tiếp liệu rộng 32 bit sử dụng Big-Endian, dạng đảo bit để biểu diễn liệu, nghĩa Bit MSB Bit 31 LSB MicroBlaze sử dụng từ 32-bit, nửa từ 16bit, cho phép truy nhập theo byte vào nhớ Ngăn xếp MicroBlaze vùng nhớ địa cao lớn dần xuống vùng nhớ địa thấp khoản liệu đẩy vào ngăn xếp nhờ lệnh Call Các khoản liệu vùng nhớ địa thấp pop khỏi ngẵn xếp trước tiên MicroBlaze có ghi đặc biệt như: đếm chương trình (PC) đọc/ khơng thể ghi được, ghi trạng thái máy MSR (Machine Status Register) trạng thái xử lý: carry, lỗi chia cho 0, lỗi FSL, cho phép/cấm ngắt Thanh ghi địa ngoại lệ EAR (Exception Address Register) lưu địa đầy đủ load/store gây ngoại lệ Thanh ghi trạng thái ngoại lệ ESR (Exception Status Register) loại ngoại lệ xẩy Thanh ghi trạng thái dấu phẩy động FSR (Floating-Point Status Register) thao tác bị lỗi, lỗi chia cho 0, tràn, tràn lỗi tốn hạng khơng bình thường hóa lệnh dấu phẩy động TIEUMicroBlazeLUANcũngMOIhỗtrợ xóa,downloadngắt,ngoạilệ:củaskknchat123@gmailngườidùng,breakvàcácngoạilệ.comcủa phần cứng Đối với ngắt, nguồn ngắt từ bên ngồi (nối với cổng vào ngắt) Nếu cần phải có nhiều ngắt, phải sử dụng điều khiển ngắt Có điều khiển ngắt sẵn có cho sử dụng với công cụ phần mềm Xilinx EDK Bộ xử lý phản ứng với ngắt bit cho phép ngắt IE (interrupt enable) MSR thiết lập Một ngắt lệnh thực xẩy ra, lệnh giai đoạn giải mã thay rẽ nhánh đến interrupt vector (địa 0x10) Địa trở sau thực xong ngắt (địa lệnh giai đoạn giải mã bị ngắt) tự động nạp vào ghi chung R14 Ngồi ra, xử lý xóa bit IE MSR để cấm ngắt Bit IE tự động thiết lập trở lại thực lệnh RTID Chương trình điều khiển MicroBlaze phải viết ngơn ngữ C/C++ Bởi sử dụng C/C++ phương pháp ưa thích hầu hết người dùng khn dạng mà cơng cụ phần mềm phát triển Xilinx EDK mong muốn Các công cụ Xilinx EDK xây dựng trình biên dịch C/C++ để tạo mã máy cần thiết cho MicroBlaze IV Mã chương trình CPU bit 4.1 4.2 Mơ tổng hợp CPU Trong phần tinh chỉnh thêm mô CPU nghiên cứu mô RTL (Register Transfer Level - Mức truyền ghi) CPU CPU mô số thành phần cấp thấp khởi tạo để tạo thành thiết kế CPU Ở thiết kế CPU kiến trúc khởi tạo tất thành phần cấp thấp để tạo thành CPU Hình 4.1: Sơ đồ khối CPU Sau triển khai sơ đồ khối này, trình bày tệp cpu.vhd: library IEEE; use IEEE.std_logic_1164.all; use work.cpu_lib.all; entity cpu is port(clock, reset, ready : in std_logic; port(addr : out bit16; port(rw, vma : out std_logic; TIEUport(data: inoutLUANbit16); MOI download : skknchat123@gmail.com end cpu; architecture rtl of cpu is component regarray port( data : in bit16; port( sel : in t_reg; port( en : in std_logic; port( clk : in std_logic; port( q : out bit16); end component; component reg port( a : in bit16; port( clk : in std_logic; port( q : out bit16); end component; component trireg port( a : in bit16; port( en : in std_logic; port( clk : in std_logic; port( q : out bit16); end component; component control port( clock : in std_logic; port( reset : in std_logic; port( instrReg : in bit16; port( compout : in std_logic; port( ready : in std_logic; port( progCntrWr : out std_logic; port( progCntrRd : out std_logic; port( addrRegWr : out std_logic; port( outRegWr : out std_logic; port( outRegRd : out std_logic; port( shiftSel : out t_shift; port( aluSel : out t_alu; port( compSel : out t_comp; port( opRegRd : out std_logic; port( opRegWr : out std_logic; port( instrWr : out std_logic; port( regSel : out t_reg; port( regRd : out std_logic; port( regWr : out std_logic; port( rw : out std_logic; port( vma : out std_logic port( ); end component; component alu port( a, b : in bit16; port( sel : in t_alu; port( c : out bit16); end component; component shift port ( a : in bit16; port( sel : in t_shift; port( y : out bit16); end component; component comp port( a, b : in bit16; port( sel : in t_comp; port( compout : out std_logic); end component; TIEU LUAN MOI download : skknchat123@gmail.com signal opdata, aluout, shiftout, instrregOut : bit16; signal regsel : t_reg; signal regRd, regWr, opregRd, opregWr, outregRd, outregWr, signal addrregWr, instrregWr, progcntrRd, progcntrWr, signal compout : std_logic; signal alusel : t_alu; signal shiftsel : t_shift; signal compsel : t_comp; begin ra1 : regarray port map(data, regsel, regRd, regWr, data); opreg: trireg port map (data, opregRd, opregWr, opdata); alu1: alu port map (data, opdata, alusel, aluout); shift1: shift port map (aluout, shiftsel, shiftout); outreg: trireg port map (shiftout, outregRd, outregWr,data); addrreg: reg port map (data, addrregWr, addr); progcntr: trireg port map (data, progcntrRd, progcntrWr,data); comp1: comp port map (opdata, data, compsel, compout); instr1: reg port map (data, instrregWr, instrregOut); con1: control port map (clock, reset, instrregOut, compout, ready, progcntrWr, progcntrRd, addrregWr, outregWr, outregRd, shiftsel, alusel, compsel, opregRd, opregWr, instrregWr, regsel, regRd, regWr, rw,vma); end rtl; Architecture rtl (entity) thực thể cpu triển khai cấu trúc sơ đồ khối Architecture rtl chứa khai báo tất thành phần (component) sử dụng để xây dựng thiết kế, tín hiệu sử dụng để kết nối thành phần khởi tạo thành phần để tạo chức Sau khai báo thành phần tín hiệu (signal) câu lệnh khởi tạo thành phần thể thành phần kết nối tín hiệu thích hợp Trong phần tiếp theo, thành phần VHDL mô chi tiết 4.2.1 Thực thể ALU Thực thể mô ALU Thực thể thực số phép toán số học logic nhiều bus đầu vào Hình 4.2: Mơ tả thực thể ALU Đầu vào a b hai bus đầu vào mà hoạt động ALU thực Bus đầu c trả kết hoạt động ALU TIEU LUAN MOI download : skknchat123@gmail.com Hình 4.3: Trạng thái đầu vào sel Như thấy, ALU thực số phép toán số học, chẳng hạn cộng trừ, số phép toán logic, chẳng hạn AND, OR XOR Sau mô VHDL thực thể ALU: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; use work.cpu_lib.all; entity alu is port( a, b : in bit16; port( sel : in t_alu; port( c : out bit16); end alu; architecture rtl of alu is begin aluproc: process(a, b, sel) begin case sel is when alupass => c c c c c c c c c c c if a = b then compout