I. Thiết kế mạch với ngôn ngữ VHDL.
1. Giới thiệu VHDL.
2. Cấu trúc code.
3. Các kiểu dữ liệu.
4. Các phép toán và thuộc tính.
5. Code song song/Code tuần tự.
6. Tín hiệu và biến.
7. Máy hữu hạn trạng thái.
8. Phương pháp thiết kế đa cấp (Packages,Components,Subprogram)
9. Attibutes & Configurations.
10. Tổng hợp mã VHDL.
II. Thiết kế CPU.
1. Nguyên tắc thiết kế CPU.
2. Các thành phần của CPU.
3. Tối ưu hóa, mô phỏng, tổng hợp và triển khai CPU.
100 trang |
Chia sẻ: Mr Hưng | Lượt xem: 932 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Thiết kế nhờ máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Thiết kế nhờ máy tínhNguyễn Thành KiênBộ môn Kỹ thuật Máy tínhKhoa Công nghệ thông tin, ĐH BKHNTài liệu tham khảoText Book:Circuit Design with VHDL, Volnei A.Pedroni, MIT press.VHDL Programming by Examples, Douglas L.Perry, McGraw Hill.Reference Books:1076 IEEE Standard Vhdl Language Reference Manual 2002, IEEE Computer Society.Microprocessor Design Principles and Practices with VHDL, Enoch O. Hwang.HDL Chip Design- A Practical Guide for Designing, Synthesizing and Simulating ASICs and FPGAs using VHDL or Verilog, Douglas J.Smith.Phần mềm học tậpActive-HDL 7.1.sp2Quartus (for Altera FPGAs)ISE (for Xilinx FPGAs)www.opencores.orgGiảng viênNguyễn Thành KiênGiảng viên Bộ môn Kỹ thuật Máy tínhKhoa CNTT, ĐHBKHN.Mobile: +84983588135Email: kiennt-fit@mail.hut.edu.vnYêu cầu môn họcTham gia >75% số giờ học.Nghỉ ≥ 5 buổi => Học lại.Nghỉ ≥ 3 buổi => Không thi lần 1.Cách tính điểm:Bài kiểm tra giữa kỳ: 20%Bài tập lớn: 20%Bài kiểm tra cuối kỳ: 60%Nội dung môn họcI. Thiết kế mạch với ngôn ngữ VHDL.1. Giới thiệu VHDL.2. Cấu trúc code.3. Các kiểu dữ liệu.4. Các phép toán và thuộc tính.5. Code song song/Code tuần tự.6. Tín hiệu và biến.7. Máy hữu hạn trạng thái.8. Phương pháp thiết kế đa cấp (Packages,Components,Subprogram)9. Attibutes & Configurations.10. Tổng hợp mã VHDL.II. Thiết kế CPU.1. Nguyên tắc thiết kế CPU.2. Các thành phần của CPU.3. Tối ưu hóa, mô phỏng, tổng hợp và triển khai CPU.Nội dung môn họcI. Thiết kế mạch với ngôn ngữ VHDL.1. Giới thiệu VHDL.2. Cấu trúc code.3. Các kiểu dữ liệu.4. Các phép toán và thuộc tính.5. Code song song/Code tuần tự.6. Tín hiệu và biến.7. Máy hữu hạn trạng thái.8. Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).9. Attibutes & Configurations.II. Thiết kế CPU.1. Giới thiệu ngôn ngữ VHDL.Phương pháp thiết kế bằng HDLPhương pháp thiết kếtruyền thống1. Giới thiệu ngôn ngữ VHDL.VHDL là gì?Một ngôn ngữ mô tả phần cứng: VHDL - VHSIC Hardware Description Language.VHSIC - Very High Speed Integrated Circuits.Là chuẩn do Bộ QP Mỹ phát triển từ thập niên 70. Dựa trên ngôn ngữ lập trình ADA, nhằm tạo ra tài liệu mô tả hoạt động của các mạch điện tử.1987 được IEEE chuẩn hóa trong IEEE 1076-1987. 1993 hoàn thiện lại thành IEEE 1076-1993.2002 giải quyết vấn đề protected types=>IEEE 1076-20021. Giới thiệu ngôn ngữ VHDL.VHDL là chuẩn độc lập mô tả hệ thống:Các nhà phát triển hệ thống dựa trên VHDL để mô tả, thiết kế hệ thống.Các phần mềm mô phỏng có thể thực hiện mô phỏng hoạt động của hệ thống mô tả.Các phần mềm tổng hợp có thể thực hiện tổng hợp sinh ra mạch thực để thực hiện hệ thống. Mạch sau khi tổng hợp có thể được nạp xuống chip để thực hiện chức năng mô tả.Chức năng: mô tả hoạt động của các hệ thống hoặc mạch điện tử nhằm thực hiện các hệ thống hoặc mạch này trên linh kiện thực.1. Giới thiệu ngôn ngữ VHDL.Ưu điểm của VHDL:Cho phép hoạt động của hệ thống được mô tả (modeled) và kiểm thử (simulated) trước khi các công cụ tổng hợp “dịch” thiết kế sang phần cứng thực tế (gates and wires).Cho phép mô tả hệ thống song song.Khi các mô hình VHDL được “dịch” sang “gates and wires” thì nó có thể được nạp lên phần cứng CPLD và FPGA để thực thi.1. Giới thiệu ngôn ngữ VHDL.Hai ứng dụng chính của VHDL là:PLD (Programmable Logic Device): CPLD (Complex PLD)FPGA (Field Programmable Gate Array).ASIC (Application-Specific IC)Quy trình thiết kế mạch dựa trên VHDLCác công cụ thiết kế VHDLBộ công cụ của nhà sản xuất chip:Quartus/Maxplus => tổng hợp VHDL code lên chip CPLD/FPGA của Altera.ISE => tổng hợp VHDL code lên chip CPLD/FPGA của Xilinx.Một số công cụ của các hãng thứ ba:ActiveHDLLeonardo Spectrum (Mentor Graphics).Synplify (Synplicity).ModelSim (Mentor Graphics).Một ví dụ VHDL đơn giảnMột ví dụ VHDL đơn giảnNội dung môn họcI. Thiết kế mạch với ngôn ngữ VHDL.1. Giới thiệu VHDL.2. Cấu trúc code.3. Các kiểu dữ liệu.4. Các phép toán và thuộc tính.5. Code song song/Code tuần tự.6. Tín hiệu và biến.7. Máy hữu hạn trạng thái.8. Phương pháp thiết kế đa cấp (Packages, Components, Subprogram).9. Attibutes & Configurations.II. Thiết kế CPU.Code structurelibrary IEEE; use IEEE.std_logic_1164.all;ENTITY full_adder IS PORT (a,b,cin: in bit; s,cout:out bit);END full_adder;Architecture dataflow of full_adder isbegin s q q USE WORK.sigdecl.ALL;3.1.1. SignalPhạm vi tác động của khai báo signal:Một signal được khai báo trong PACKAGE thì sử dụng được (visible) trong tất cả các thiết kế sử dụng gói package này.Một signal được khai báo trong ENTITY thì sử dụng được (visible) trong tất cả các ARCHITECTURE gắn với ENTITY này.Một signal được khai báo trong phần khai báo của ARCHITECTURE thì chỉ sử dụng được trong architecture này.Một signal được khai báo trong 1 khối (block) bên trong ARCHITECTURE thì chỉ sử dụng được bên trong khối đó.3.1.1. SignalVí dụ về phạm vi tác động của signalABCDEF3.1.1. SignalMột đặc điểm quan trọng của signal khi được sử dụng bên trong một phần của mã tuần tự (vd PROCESS, FUNCTION, PROCEDURE) là:Giá trị không được cập nhật ngay lập tức sau câu lệnh, mà phải đến kết thúc đoạn mã tuần tự đó.Về nhà tìm hiểu, hôm sau hỏi3.1.2. Biến (variable)Biến variable chỉ biểu diễn các dữ liệu nội bộ, chỉ có thể sử dụng bên trong PROCESS, FUNCTION, hoặc PROCEDURE.Giá trị của biến variable không thể truyền ra ngoài trực tiếp.Giá trị của biến được cập nhật trực tiếp sau từng dòng mã lệnh.3.1.2. Biến (variable)Khai báo biến:VARIABLE name: type [range] [:= init_value];VARIABLE control: BIT := '0';VARIABLE count: INTEGER RANGE 0 TO 100;VARIABLE y: STD_LOGIC_VECTOR (7 DOWNTO 0) := "10001000";Ví dụ về sử dụng variable trong VHDLLIBRARY ieee;USE ieee.std_logic_1164.all;---------------------------------------ENTITY count_ones ISPORT ( din: IN STD_LOGIC_VECTOR (7 DOWNTO 0); ones: OUT INTEGER RANGE 0 TO 8);END count_ones;--------------------------------------- ARCHITECTURE ok OF count_ones IS BEGIN PROCESS (din) VARIABLE temp: INTEGER RANGE 0 TO 8; BEGIN temp := 0; FOR i IN 0 TO 7 LOOP IF (din(i)='1') THEN temp := temp + 1; END IF; END LOOP; ones y y y y y y y y +2,147,483,647ARCHITECTURE test OF test ISBEGINPROCESS(X) VARIABLE a : INTEGER; VARIABLE b : int_type;BEGIN a := 1; --Ok 1 a := -1; --Ok 2 a := 1.0; --error 3 END PROCESS;END test;Kiểu số thực RealKiểu dl số thực, un-synthesizable.Dải giá trị biểu diễn được:-1.0E+38=> +1.0E+38. ARCHITECTURE test OF test IS SIGNAL a : REAL;BEGINa ) OF BIT;TYPE fourval IS ( ‘X’, ‘0’, ‘1’, ‘Z’ );TYPE state IS (idle, forward, backward, stop);TYPE color IS ( red, yellow, blue, green, orange );Các kiểu dữ liệu liệt kê đãđịnh nghĩa trướcViệc mã hóa các dữ liệu liệt kê được thực hiện tuần tự và tự động. Ví dụ:TYPE color IS (red, green, blue, white);Có 4 dữ liệu liệt kê, dùng 2 bit biểu diễn, gán “00”=>red, “01”=>green, “10”=>blue, “11”=>white.Kiểu dữ liệu liệt kê ENUMERATEDENTITY traffic_light IS PORT(sensor : IN std_logic; clock : IN std_logic; red_light : OUT std_logic; green_light : OUT std_logic; yellow_light : OUT std_logic);END traffic_light;------------------------------------------------------------ARCHITECTURE simple OF traffic_light ISTYPE t_state is (red, green, yellow);Signal present_state, next_state : t_state;BEGINPROCESS(present_state, sensor)BEGIN CASE present_state IS WHEN green => next_state red_light red_light ) OF BIT;Kiểu dữ liệu con subtypeKhai báo kiểu dữ liệu con được sử dụng để định nghĩa các tập con của một kiểu dữ liệu. Tập con có thể chứa tòan bộ khoảng giá trị của kiểu cơ sở những cũng có thể chỉ chứa một phần.TYPE INTEGER IS -2,147,483,647 TO +2,147,483,647;SUBTYPE NATURAL IS INTEGER RANGE 0 TO +2,147,483,647;Ví dụ về khai báo subtypePACKAGE mypack ISSUBTYPE eightbit IS BIT_VECTOR(0 TO 7);SUBTYPE fourbit IS BIT_VECTOR(0 TO 3);FUNCTION shift_right(val : BIT_VECTOR)RETURN BIT_VECTOR;END mypack;-------------------------------------------------------------------------------PACKAGE BODY mypack ISFUNCTION shift_right(val : BIT_VECTOR) RETURN BIT_VECTOR IS VARIABLE result : BIT_VECTOR(0 TO (val’LENGTH -1));BEGINresult := val;IF (val’LENGTH > 1) THENFOR i IN 0 TO (val’LENGTH -2) LOOPresult(i) := result(i 1);END LOOP;result(val’LENGTH -1) := 0;ELSEresult(0) := 0;END IF;RETURN result;END shift_right;END mypack;Kiểu bản ghi recordKiểu dữ liệu bản ghi nhóm các đối tượng có kiểu khác nhau như một đối tượng duy nhất.Mỗi thành phần của bản ghi có thể được truy cập bằng tên trường của nó.Các thành phần của bản ghi có thể cùng kiểu hoặc khác kiểu dữ liệu. Kiểu dữ liệu có thể bao gồm cả mảng và bản ghi.Kiểu bản ghi recordVí dụ về kiểu bản ghi:TYPE optype IS ( add, sub, mpy, div, jmp );TYPE instruction ISRECORD opcode : optype; src : INTEGER; dst : INTEGER;END RECORD;Kiểu bản ghi recordPROCESS(X) VARIABLE inst : instruction; VARIABLE source, dest : INTEGER; VARIABLE operator : optype;BEGIN source := inst.src; --Ok line 1 dest := inst.src; --Ok line 2 source := inst.opcode; --error line 3 operator := inst.opcode; --Ok line 4 inst.src := dest; --Ok line 5 inst.dst := dest; --Ok line 6 inst := (add, dest, 2); --Ok line 7 inst := (source); --error line 8END PROCESS;TYPE optype IS ( add, sub, mpy, div, jmp );TYPE instruction ISRECORD opcode : optype; src : INTEGER; dst : INTEGER;END RECORD;Kiểu bản ghi recordTYPE word IS ARRAY(0 TO 3) OF std_logic;TYPE t_word_array IS ARRAY(0 TO 15) OF word;TYPE addr_type ISRECORD source : INTEGER; key : INTEGER;END RECORD;TYPE data_packet ISRECORD addr : addr_type; data : t_word_array; checksum : INTEGER; parity : BOOLEAN;END RECORD;PROCESS(X)VARIABLE packet : data_packet;BEGIN packet.addr.key := 5; --Ok packet.addr := (10, 20); --Ok packet.data(0) := (‘0’, ‘0’, ‘0’, ‘0’); packet.data(10)(4) := ‘1’; --error packet.data(10)(0) := ‘1’; --Ok END PROCESS; Kiểu dữ liệu FileCác file bao gồm các dãy tuần tự của một kiểu dữ liệu (có thể là INTEGER, record)Cuối mỗi file được đánh dấu kết thúc bằng ký tự “End of file”.Kiểu dữ liệu FileCác thao tác thực hiện với file:READ (file, data)ProcedureWRITE (file, data)ProcedureENDFILE (file)Function, returns booleanKiểu dữ liệu FileKhai báo kiểu file:TYPE int_file IS FILE OF INTEGER;Khai báo đối tượng file:FILE myfile : int_file IS IN “/test/data_file”Ví dụ về truy cập fileLIBRARY IEEE; USE IEEE.std_logic_1164.ALL;ENTITY rom IS PORT(addr : IN INTEGER; cs : IN std_logic; data : OUT INTEGER);END rom;ARCHITECTURE rom OF rom ISBEGINPROCESS(addr, cs) VARIABLE rom_init : BOOLEAN := FALSE; --line 1 TYPE rom_data_file_t IS FILE OF INTEGER; --line 2 FILE rom_data_file : rom_data_file_t IS IN “/dlp/test1.dat”; --line 3 TYPE dtype IS ARRAY(0 TO 63) OF INTEGER; VARIABLE rom_data : dtype; --line 4 VARIABLE i : INTEGER := 0; --line 5BEGIN IF (rom_init = false) THEN --line 6 WHILE NOT ENDFILE(rom_data_file) --line 7 AND (i ko thi L1Nếu làm tốt => +10 điểm vào bài thiĐịa điểm: bộ môn KTMT C1-322.Thời gian: 8h – 17hY/c: Mang slide + Mã nguồn + Tài liệu TKKhi báo cáo sẽ phải demo chương trình (chạy mô phỏng).Nếu ai demo phức tạp, tự đem máy tính.
Các file đính kèm theo tài liệu này:
- wpf_9018.ppt