237
Chuyên Chuyên đề đề: ĐẠI HC BÁCH KHOA ĐÀ NNG KHOA ĐIN T- VIN THÔNG Chuyên Chuyên đề đề: Thiết Thiết kế kế phần phần cứng cứng với với vi vi mạch mạch logic logic khả khả trình trình Ging viên: TS. Hunh Vit Thng Đà Nng, 08/2013 @ETEDUT

ChuyenDe Design With FPGAs 2013 JPG Print

Embed Size (px)

Citation preview

Page 1: ChuyenDe Design With FPGAs 2013 JPG Print

ChuyênChuyên đềđề::

ĐẠI HỌC BÁCH KHOA ĐÀ NẴNGKHOA ĐIỆN TỬ - VIỄN THÔNG

ChuyênChuyên đềđề::

ThiếtThiết kếkế phầnphần cứngcứngvớivới vi vi mạchmạch logic logic khảkhả trìnhtrình

Giảng viên: TS. Huỳnh Việt Thắng

Đà Nẵng, 08/2013@

ETEDUT

Page 2: ChuyenDe Design With FPGAs 2013 JPG Print

Nội dung môn họcNội dung môn học

1. Ôn tập về Thiết kế số

2. Giới thiệu công nghệ IC khả trình

3. Máy trạng thái hữu hạn (FSM)

4. Ngôn ngữ mô tả phần cứng VHDL

5. Quy trình thiết kế với phần mềm ISE và FPGA củaXilinx

2

Xilinx

6. Giới thiệu các chủ đề nâng cao

7. Các ví dụ và bài tập thiết kế

8. Tổng kết@

ETEDUT

Page 3: ChuyenDe Design With FPGAs 2013 JPG Print

Tài liệu tham khảoTài liệu tham khảoTham khảo chính:

1) Douglas L. Perry, VHDL Programming by Example, 4th Edition (2002)

2) Tống Văn On, Nguyên lý mạch tích hợp: Tập 2 - Lập trình ASIC, NXB Laođộng xã hội, 2005động xã hội, 2005

Đọc thêm:

3) Peter J. Ashenden, The VHDL Cookbook

4) Nguyễn Quốc Tuấn, Giáo trình Ngôn ngữ VHDL để thiết kế vi mạch, NXB

Đại học quốc gia TP.HCM, 2002

5) Tống Văn On, Thiết kế mạch số với VHDL và Verilog (2 tập), NXB Laođộng xã hội, 2007

6) Các tài liệu tham khảo và các datasheet sưu tầm trên Internet

3

6) Các tài liệu tham khảo và các datasheet sưu tầm trên Internet

Trân trọng cảm ơn PGS.TS. Phạm Ngọc Nam, Viện Điện TửViễn Thông, Trường Đại học Bách khoa Hà Nội đã cho phéptham khảo và sử dụng bài giảng của Thầy!

@ETEDUT

Page 4: ChuyenDe Design With FPGAs 2013 JPG Print

Kiểm tra đánh giá môn họcKiểm tra đánh giá môn học

• Kiểm tra giữa kỳ: Thi viết được dùng tài liệu

• Kiểm tra cuối kỳ: Thi viết được dùng tài liệu

• Bài tập thiết kế theo nhóm và báo cáo trước lớp• Bài tập thiết kế theo nhóm và báo cáo trước lớp

• Dự kiến kế hoạch học tập�Thời gian học trong ______ buổi

�Kế hoạch có thể thay đổi tùy theo sự sắp xếp của GV với lớp và sẽđược thông báo trước

4

@ETEDUT

Page 5: ChuyenDe Design With FPGAs 2013 JPG Print

Website môn họcWebsite môn học

• https://sites.google.com/site/hvthangete/teaching/fpga

• Password download slide: “fpga@etedut”

5

@ETEDUT

Page 6: ChuyenDe Design With FPGAs 2013 JPG Print

About your lecturerAbout your lecturer• Bộ môn Kỹ thuật Điện Tử, khoa ĐTVT, ĐHBK Đà Nẵng

� Office: Khu C, ĐHBK ĐN; Email: [email protected]

• Research Interests� Reconfigurable computing (aka computing with FPGA)� Reconfigurable computing (aka computing with FPGA)

� Embedded reconfigurable systems

� Machine learning

� Floating-point arithmetic, Interval arithmetic, Affine arithmetic

• Education� 06/2003: Kỹ sư, ĐHBK ĐN (khóa 1998-2003)

� 12/2007: Thạc sĩ kỹ thuật chuyên ngành Điện tử, ĐHĐN� Thesis: “Implementation of a Network-on-Chip on FPGA”, Thực hiện Network-on-Chip trên

6

� Thesis: “Implementation of a Network-on-Chip on FPGA”, Thực hiện Network-on-Chip trên

nền FPGA

� 07/2012: Tiến sĩ kỹ thuật chuyên ngành Điện-Điện tử, ĐH Kỹ thuật Graz (TU Graz),Cộng hòa Áo (Austria)� Thesis: “Efficient floating-point Implementation of Signal Processing Algorithms on

Reconfigurable Hardware”, Thực hiện hiệu quả các thuật toán xử lý tín hiệu dấu phẩy động

trên phần cứng tái cấu hình@

ETEDUT

Page 7: ChuyenDe Design With FPGAs 2013 JPG Print

1. ÔN TẬP1. ÔN TẬP

@ETEDUT

Page 8: ChuyenDe Design With FPGAs 2013 JPG Print

1. ÔN TẬP1. ÔN TẬP

• Mạch số gồm:�Hệ tổ hợp (Combinational Circuits)

�Hệ tuần tự (Sequential Circuits)�Hệ tuần tự (Sequential Circuits)

• Hệ tổ hợp�Không có tính nhớ, trạng thái ngõ ra chỉ phụ thuộc tín hiệu vào

�Thiết kế trên cơ sở cổng logic (logic gates)

• Hệ tuần tự�Có tính nhớ và có tính đồng bộ

10

�Có tính nhớ và có tính đồng bộ

�Thiết kế trên cơ sở Flip – Flop (FF)

• Đ�c l�i trong các sách v� K� Thu�t S�

@ETEDUT

Page 9: ChuyenDe Design With FPGAs 2013 JPG Print

1. ÔN TẬP1. ÔN TẬP

• Biểu diễn mạch số theo các dạng chính tắc: tổng các tích số (CT1)

hoặc tích các tổng số (CT2)

• Mỗi đầu ra hoặc tín hiệu ra được biểu diễn bằng một phương trình• Mỗi đầu ra hoặc tín hiệu ra được biểu diễn bằng một phương trìnhđại số theo các biến đầu vào và tuân thủ theo 1 trong 2 dạng chínhtắc

• Rút gọn (tối thiểu hóa) phương trình logic đầu ra theo 2 nhómphương pháp:� Biến đổi đại số: tiên đề định lý đại số Boole

� Thuật toán:

11

� Thuật toán:�Bảng Karnaugh (Bìa K, K-Map)

�Thuật toán Quinn Mc-Cluskey@ETEDUT

Page 10: ChuyenDe Design With FPGAs 2013 JPG Print

1. ÔN TẬP1. ÔN TẬP

• Rút gọn phương trình logic bằng bìa K: “Kết hợp 2n ô kế

cận để loại đi n biến dư thừa”

• Ý nghĩa của giá trị tùy định “X” ?

• Ví dụ: Rút gọn hàm sau:

�F1(x3,x2,x1,x0) = ΣΣΣΣ (0,1,2,3,4,5,8,10,14) + d(9,12)

12

@ETEDUT

Page 11: ChuyenDe Design With FPGAs 2013 JPG Print

11. ÔN TẬP. ÔN TẬP

• Logic gates: AND, OR, NAND, NOR, NOT, BUFFER, XOR,XNOR�Totem Pole Output�Totem Pole Output

�Open Collector Output

�Tri-state Output

• Flip-Flop: RS, JK, D, T�Bảng trạng thái, phương trình

�Bảng đầu vào kích (Excitation Table): dùng cho thiết kế

13

�Ý nghĩa tín hiệu đồng bộ Ck

�Các ngõ vào Preset (Pr) và Clear (Cl) và phương pháp thiết lập trạngthái ban đầu cho FF bằng các mạch RC

@ETEDUT

Page 12: ChuyenDe Design With FPGAs 2013 JPG Print

1. ÔN TẬP1. ÔN TẬP

• Các mạch tổ hợp thông dụng:�MUX / DEMUX

�Encoder / Decoder�Encoder / Decoder

�Adder / Subtracter

�Magnitude Comparator

�Parity Generator/Checker

• Các mạch tuần tự thông dụng:�Counter (nối tiếp, song song, hỗn hợp)

14

�Register, Shift Register

�Memory

• ALU (Arithmetic Logic Unit)?

• Microprocessor?@

ETEDUT

Page 13: ChuyenDe Design With FPGAs 2013 JPG Print

2. 2. GiớiGiới thiệuthiệu chungchung vềvềcôngcông nghệnghệ IC IC khảkhả trìnhtrình

@ETEDUT

Page 14: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (1/9)Các bước thiết kế VLSI (1/9)

System Specification Circuit Design

Architectural Design Physical Design

Functional Design Fabrication

16

Logic Design

Functional Design Fabrication

Packaging

@ETEDUT

Page 15: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (2/9)Các bước thiết kế VLSI (2/9)

System Specification – Xác định kích thước, tốc độ, côngsuất và các chức năng của hệ thống

Architectural Design – Xác định kiến trúc của hệ thống: víArchitectural Design – Xác định kiến trúc của hệ thống: vídụ: RISC/CISC, số lượng ALU, kích thước bộ nhớ cache.Việc xác định kiến trúc sẽ giúp cho việc ước lượng tốc độxử lý của hệ thống, kích thước chip, công suất tiêu thụ …

17

@ETEDUT

Page 16: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (3/9)Các bước thiết kế VLSI (3/9)

Functional Design – Xác định các khối chức năng chínhvà kết nối giữa các khối. Chưa cần xác định chi tiết cáchthức thực hiện các khối này.thức thực hiện các khối này.

18

@ETEDUT

Page 17: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (4/9)Các bước thiết kế VLSI (4/9)

Logic Design – Thiết kế logic, ví dụ: thiết kế mạch logictổ hợp, logic dãy, ALU, khối điều khiển…. Kết quả củabước thiết kế này là bản mô tả RTL (Register Transferbước thiết kế này là bản mô tả RTL (Register Transfer

Level). RTL được biểu diễn bằng ngôn ngữ mô tả phầncứng HDL (Hardware Description Language), e.g.,VHDL, Verilog.

19

X = (AB+CD)(E+F)Y= (A(B+C) + Z + D)

@ETEDUT

Page 18: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (5/9)Các bước thiết kế VLSI (5/9)

Circuit Design – Thiết kế mạch bao gồm các cổng logic,transistors và các kết nối. Kết quả thu được từ bước thiếtkế này là một netlist.kế này là một netlist.

20

@ETEDUT

Page 19: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (6/9)Các bước thiết kế VLSI (6/9)

• Net list:net1: top.in1 i1.in

net2: i1.out xxx.B

• Component list:top: in1=net1 n1=topin1 n2=topin2

n3=botin1 out=outnetnet2: i1.out xxx.B

topin1: top.n1 xxx.xin1

topin2: top.n2 xxx.xin2

botin1: top.n3 xxx.xin3

net3: xxx.out i2.in

outnet: i2.out top.out

i1: in=net1 out=net2

xxx: xin1=topin1 xin2=topin2xin3=botin1 B=net2 out=net3

i2: in=net3 out=outnet

21

@ETEDUT

Page 20: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (7/9)Các bước thiết kế VLSI (7/9)

Component hierarchy

top

i1 xxx i2

22

i1 xxx i2

@ETEDUT

Page 21: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (8/9)Các bước thiết kế VLSI (8/9)

Physical Design – Chuyển từ netlist sang dạng biểu diễnhình học. Cách biểu diễn hình học này được gọi là layout.

23

@ETEDUT

Page 22: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế VLSI (9/9)Các bước thiết kế VLSI (9/9)

Fabrication – Bao gồm các quá trình như quang khắc,đánh bóng, khuyếch tán …để chế tạo ra chip (IC).

Packaging – Sắp xếp các IC trên một board mạch in PCBPackaging – Sắp xếp các IC trên một board mạch in PCB(Printed Circuit Board) hoặc trên một module đa chípMCM (Multi-Chip Module)

24

@ETEDUT

Page 23: ChuyenDe Design With FPGAs 2013 JPG Print

Remark: Remark: CácCác bướcbước thiếtthiết kếkế VLSIVLSI

System Specification Netlist

Architectural Physical

Design

ArchitecturalSpecification

Layout

Timing & relationshipChips

Architectural

Design

Functional

Design

Design

Fabrication

Packaging

Circuit Design

or

Logic Synthesis

25

RTL in HDL

Timing & relationshipbetween functional units

Packaged andtested chips

Logic

Design

Packaging@ETEDUT

Page 24: ChuyenDe Design With FPGAs 2013 JPG Print

ThiếtThiết kếkế VLSIVLSI

Các bước thiết kế vật lýCác bước thiết kế vật lý

26

@ETEDUT

Page 25: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế vật lý (1/6)Các bước thiết kế vật lý (1/6)

Circuit Partitioning

Floorplanning & Placement

Routing

27

Layout Compaction

Extraction and Verification@

ETEDUT

Page 26: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế vật lý (Các bước thiết kế vật lý (22//66))

Circuit Partitioning – Chia một mạch lớn thành các mạchnhỏ hơn

28

�@

ETEDUT

Page 27: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế vật lý (3/6)Các bước thiết kế vật lý (3/6)

Floorplanning – Thiết lập kế hoạch bố trí các module trênlayout một cách hợp lý khi mà hình dạng, kích thước, ví tríchân của các module chưa được cố định.chân của các module chưa được cố định.

29

Deadspace

@ETEDUT

Page 28: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế vật lý (4/6)Các bước thiết kế vật lý (4/6)

Placement – Bố trí cố định các module (module có thể làcổng logic, các khối chuẩn standard cells…) khi đã biếtcác thông số chi tiết của các module sao cho trễ tín hiệu,các thông số chi tiết của các module sao cho trễ tín hiệu,diện tích và số lượng kết nối nhỏ nhất.

30

v

Feedthrough

Standard cell type 1

Standard cell type 2@

ETEDUT

Page 29: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế vật lý (5/6)Các bước thiết kế vật lý (5/6)

Routing – Kết nối giữa các module trên cơ sở bảo đảm vềtrễ, khoảng cách giữa các đường dây.

31

v

Feedthrough

Type 1 standard cel1

Type 2 standard cell@

ETEDUT

Page 30: ChuyenDe Design With FPGAs 2013 JPG Print

Các bước thiết kế vật lý (6/6)Các bước thiết kế vật lý (6/6)

Compaction – Bước này tối thiểu hoá diện tích của vùnglayout để giảm kích thước chip

Verification – Kiểm tra layout bao gồm kiểm tra luật thiếtVerification – Kiểm tra layout bao gồm kiểm tra luật thiếtkế DRC (Design Rule Checking), tạo ngược lại mạch điệntừ layout (circuit extraction) để so sánh với netlist ban đầu,kiểm tra hoạt động (performance verification ) bằng cáchlấy thông tin hình học để tính toán các giá trị điện trở, điệndung, trễ…

32

dung, trễ…

@ETEDUT

Page 31: ChuyenDe Design With FPGAs 2013 JPG Print

Các công nghệ dùng trong thiết kếCác công nghệ dùng trong thiết kế

• Full-Custom ASICs (Application specific IC)�Các khối logic (logic cells) và các lớp mặt nạ không được thiết kế sẵn

mà do người thiết kế thiết kế mà do người thiết kế thiết kế

• Semicustom ASICs�Các khối logic ( logic cells) được thiết kế sẵn (được định nghĩa trong

thư viện cell) và các lớp mặt nạ được thiết kế bởi người thiết kế

�2 loại: Standard-cell based and Gate-array-based ASICs

• Các linh kiện logic khả trình (Programmable Logic Devices)

33

• Các linh kiện logic khả trình (Programmable Logic Devices)�Tất cả các khối logic được thiết kế sẵn và không cần phải thiết kế lớp

mặt nạ nào

�Types: PLD (Programmable Logic Device) and FPGA (Field Programmable Gate Array)

@ETEDUT

Page 32: ChuyenDe Design With FPGAs 2013 JPG Print

CôngCông nghệnghệ IC IC khảkhả trìnhtrình

34

@ETEDUT

Page 33: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trình

• Realisation as AND-OR: F1=xy+xy’z+x’yz

• Realisation as OR-AND: F1=((x’+y’) (x’+y+z’) (x+y’+z’))’(x+y’+z’))’

x y z

F1

x y z

F1

35

@ETEDUT

Page 34: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhPrProgrammable logic arrayogrammable logic array

• PLA

Programmable

And

plane

And

plane

Or

plane

Input

Output

Programmable

36

plane

@ETEDUT

Page 35: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhPrProgrammable logic arrayogrammable logic array

• PLA

37

@ETEDUT

Page 36: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhProgrammable Array LogicProgrammable Array Logic

• PAL

And

plane

And

plane

Or

Input

Output

Programmable

Fixed

38

Or

planeOutput

@ETEDUT

Page 37: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhProgrammable Array LogicProgrammable Array Logic

39

@ETEDUT

Page 38: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhComplex Programmable Logic DevicesComplex Programmable Logic Devices

• CPLD

40

@ETEDUT

Page 39: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhComplex Programmable Logic DevicesComplex Programmable Logic Devices

• Các công nghệ lập trình�PROM: Lập trình 1 lần

�EPROM, flash, EEPROM: lập trình nhiều lần�EPROM, flash, EEPROM: lập trình nhiều lần

Non-volatile

41

@ETEDUT

Page 40: ChuyenDe Design With FPGAs 2013 JPG Print

Ví dụ: PROMVí dụ: PROM

Address

Vcc Vcc Vcc VccFuse

After manufacturing

4

2-to

-4 D

ecoder

2

MSB

42

4

2-to-4 Mux

2

LSB

Data

@ETEDUT

Page 41: ChuyenDe Design With FPGAs 2013 JPG Print

Ví dụ: PROMVí dụ: PROM

Address

Vcc Vcc Vcc Vcc

After programming

4

2-to

-4 D

ecoder

2

MSB

43

4

2-to-4 Mux

2

LSB

Data

@ETEDUT

Page 42: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhFieldField--programmable Gate Arrayprogrammable Gate Array

• FPGA: XC40xx Long linesRouting via switching matrices

I/O I/O I/O I/O

CLBCLB CLB

SM SM SM SM

SM SM SM SMI/O

I/OCLB: Configurable

Logic Block

SW: Switching Matrix

44

CLB CLB CLB

SM SM SM SM

SM SM SM SM

I/O

I/O

@ETEDUT

Page 43: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhFieldField--programmable Gate Arrayprogrammable Gate Array

• Cấu tạo của một CLB (Configurable Logic Block)

16x1 G16x1

LUT:

Bool-function

of 4

variables

16x1

LUT:

FF

G

G

GQ

F

45

LUT:

Bool-function

of 4

variables

FF

F

F

FQ@ETEDUT

Page 44: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhFieldField--programmable Gate Arrayprogrammable Gate Array

• FPGA: Switching Matrix SMPass

TOR

46

@ETEDUT

Page 45: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhFieldField--programmable Gate Arrayprogrammable Gate Array

• Các loại kết nối:

47

@ETEDUT

Page 46: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhFieldField--programmable Gate Arrayprogrammable Gate Array

• Công nghệ lập trình:�SRAM-based:

�Volatile�Volatile

�Reprogrammble

�Antifuse�Non-volatile

�Programmed only-one

�IP security

48

@ETEDUT

Page 47: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhFieldField--Programmable Gate Array (FPGA)Programmable Gate Array (FPGA)

• Hãng cung cấp FPGA hàng đầu thế giới �Công ty Xilinx: http://www.xilinx.com/

�Công ty Altera: http://www.altera.com/�Công ty Altera: http://www.altera.com/

�Công ty Lattice Semiconductor: http://www.latticesemi.com/

�Công ty Actel: http://www.actel.com/

�Công ty Crypress: http://www.cypress.com/

�Công ty Atmel: http://www.atmel.com/

�Công ty QuickLogic: http://www.quicklogic.com/

49

�Công ty QuickLogic: http://www.quicklogic.com/

@ETEDUT

Page 48: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhƯu điểmƯu điểm

50

@ETEDUT

Page 49: ChuyenDe Design With FPGAs 2013 JPG Print

Công nghệ IC khả trìnhCông nghệ IC khả trìnhƯu điểmƯu điểm

• FPGA vs Custom ASIC�FPGAs are more flexible

�FPGAs are more cost effective for small quantities�FPGAs are more cost effective for small quantities

�ASICs have higher densities

• FPGA vs Parallel Computer�FPGAs are more cost effective

�FPGAs are smaller

�Parallel Computers are easier to program

51

�Parallel Computers are easier to program@ETEDUT

Page 50: ChuyenDe Design With FPGAs 2013 JPG Print

Total cost

FPGA .13µFPGA .09µ

FPGA vs. ASIC Cost FPGA vs. ASIC Cost ASIC: High volumes needed to recover design costASIC: High volumes needed to recover design cost

ASIC .13µ

FPGA .13µ

ASIC .09µ

ASIC Design Cost is much

higher

(and increasing)!!

ASIC cost/part is lower

52

VolumeFor each technology advance, crossover volume moves higher Courtesy: Richard Sevcik, Xilinx

@ETEDUT

Page 51: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

• Aerospace & Defense

• Automotive

• Consumer

• Digital Video Technologies

• Industrial/Scientific & Medical

• Test & Measurement

• Wired Communications

53

• Wired Communications

• Wireless Communications@ETEDUT

Page 52: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

54

@ETEDUT

Page 53: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

55

@ETEDUT

Page 54: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

56

@ETEDUT

Page 55: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

57

@ETEDUT

Page 56: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

58

@ETEDUT

Page 57: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

59

@ETEDUT

Page 58: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

60

@ETEDUT

Page 59: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

61

@ETEDUT

Page 60: ChuyenDe Design With FPGAs 2013 JPG Print

Ứng dụng của công nghệ IC khả trìnhỨng dụng của công nghệ IC khả trình

62

@ETEDUT

Page 61: ChuyenDe Design With FPGAs 2013 JPG Print

3. Finite State Machine3. Finite State Machine(FSM)(FSM)

Máy trạng thái hữu hạn@ETEDUT

Page 62: ChuyenDe Design With FPGAs 2013 JPG Print

Các mức thiết kế mạch số (Các mức thiết kế mạch số (11//22))

• Thiết kế dùng các cổng logic rời rạc (Gate level):�AND, OR, NAND, NOT…, Flip Flops

�Dùng cho các bài toán thiết kế đơn giản như thiết kế bộ tổng, tổng�Dùng cho các bài toán thiết kế đơn giản như thiết kế bộ tổng, tổngcủa tích, bộ đếm…

�Kết quả: module

• Thiết kế dùng các thanh ghi và các module số (RTL: registertransfer level)�Thanh ghi dịch, decoder, ALU, Mux, bộ cộng, nhân, bộ đếm…

�Dùng cho các bài toán thiết kế từ trung bình đến phức tạp như thiết

64

�Dùng cho các bài toán thiết kế từ trung bình đến phức tạp như thiếtkế vi xử lý, thiết kế các bộ mã hoá và giải mã âm thanh, hình ảnh …

�Kết quả: vi mạch (IC)

@ETEDUT

Page 63: ChuyenDe Design With FPGAs 2013 JPG Print

Các mức thiết kế mạch số (2/2)Các mức thiết kế mạch số (2/2)

• Thiết kế hệ thống (system level design)

�Vi xử lý, bộ nhớ, các bộ mã hoá và giải mã hình ảnh, âm thanh số,các bộ xử lý tín hiệu số…các bộ xử lý tín hiệu số…

�Dùng cho thiết kế các hệ thống số phức tạp như máy rút tiền tựđộng, các ứng dụng đa phương tiện

�Kết quả: PCB

• Trong quá trình thiết kế một hệ thống số, các mức trên có thểđược sử dụng 1 đến nhiều lần

65

được sử dụng 1 đến nhiều lần

@ETEDUT

Page 64: ChuyenDe Design With FPGAs 2013 JPG Print

Thiết kế mạch số tổ hợpThiết kế mạch số tổ hợpCác mạch logic tổ hợp cơ bảnCác mạch logic tổ hợp cơ bản

•Ripple-carry adders•Adder/subtractors

•Multipliers•Multipliers•Logic units

•Arithmetic-logic units•Decoders

•Selectors•Buses

66

•Buses

•Magnitude comparators@ETEDUT

Page 65: ChuyenDe Design With FPGAs 2013 JPG Print

Thiết kế mạch số tuần tựThiết kế mạch số tuần tựCác loại flipCác loại flip--flopflop

• Một số khái niệm:� Mạch logic tổ hợp: tín hiệu đầu ra là hàm số của các giá trị hiện tại của

các tín hiệu đầu vào� Mạch logic tuần tự: tín hiệu đầu ra là hàm số của các giá trị hiện tại của� Mạch logic tuần tự: tín hiệu đầu ra là hàm số của các giá trị hiện tại của

tín hiệu đầu vào và trạng thái hiện tại (có nghía là cùng là hàm số củacác giá trị trước đó của tín hiệu đầu vào)

� Mạch logic tuần tự không đồng bộ: tín hiệu đầu ra và trạng thái thayđổi ngay khi tín hiệu đầu vào thay đổi

� Mạch logic tuần tự đồng bộ: tín hiệu đầu ra và trạng thái chỉ thay đổikhi tín hiệu đầu vào là đồng hồ xung nhịp có 1 giá trị nào đấy

� Chu kỳ xung nhịp: khoàng thời gian giữa hai lần chuyển từ 1 xuống 0của tín hiệu xung nhịp

� Tần số xung nhịp: 1 / chu kỳ xung nhịp

67

� Tần số xung nhịp: 1 / chu kỳ xung nhịp� Chu kỳ tác động của xung nhịp: (thời gian tín hiệu xung nhịp = 1) / chu

kỳ xung nhịp� Sườn lên: tín hiệu xung nhịp chuyển từ 0→1� Sườn xuống: tín hiệu xung nhịp chuyển từ 1→0

@ETEDUT

Page 66: ChuyenDe Design With FPGAs 2013 JPG Print

Thiết kế mạch số tuần tựThiết kế mạch số tuần tựCác loại flipCác loại flip--flopflop

S

Clk

Q

Symbol

S R Q(next)

Characteristic table

(for design of SR flip-flop)

SR flipSR flip--flopflop

R

Clk

Q’

Tam giác có nghĩa là tác động sườn lên

Tác động sườn xuống

S R Q(next)

0 0 Q

0 1 0

1 0 1

1 1 NA

Excitation table

(for design with SR flip-flop)Tác động mức 1

68

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

Excitation table

(for design with SR flip-flop)Tác động mức 1

Tác động mức 0@ETEDUT

Page 67: ChuyenDe Design With FPGAs 2013 JPG Print

ThiếtThiết kếkế mạchmạch sốsố tuầntuần tựtựCácCác loạiloại flipflip--flopflop

J

Clk

Q

Symbol

J K Q(next)

Characteristic table

(for design of JK flip-flop)

JK flipJK flip--flopflop

K

Clk

Q’

J K Q(next)

0 0 Q

0 1 0

1 0 1

1 1 Q’

Excitation table

(for design with JK flip-flop)

69

Q Q(next) J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0

Excitation table

(for design with JK flip-flop)

Circuits that use

JK flip-flops are cheaper

than those using SR flip-flops:

more don’t cares@

ETEDUT

Page 68: ChuyenDe Design With FPGAs 2013 JPG Print

ThiếtThiết kếkế mạchmạch sốsố tuầntuần tựtựCácCác loạiloại flipflip--flopflop

D

Clk

Q

Symbol Characteristic table

(for design of D flip-flop)

D Q(next)

D flipD flip--flopflop

Clk

Q’

D Q(next)

0 0

1 1

Excitation table

(for design with D flip-flop)

70

Excitation table

(for design with D flip-flop)

Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

Designing with D flip-flop

is easy

@ETEDUT

Page 69: ChuyenDe Design With FPGAs 2013 JPG Print

ThiếtThiết kếkế mạchmạch sốsố tuầntuần tựtựCácCác loạiloại flipflip--flopflop

T

Clk

Q

Symbol Characteristic table

(for design of T flip-flop)

T Q(next)

T flipT flip--flopflop

Clk

Q’

T Q(next)

0 Q

1 Q’

Excitation table

(for design with T flip-flop)

71

Excitation table

(for design with T flip-flop)

Q Q(next) T

0 0 0

0 1 1

1 0 1

1 1 0

D

Clk

Q

Q’

T @ETEDUT

Page 70: ChuyenDe Design With FPGAs 2013 JPG Print

Thiết kế mạch số tuần tựThiết kế mạch số tuần tựThiết kế mạch số tuần tự đồng bộThiết kế mạch số tuần tự đồng bộ

• Máy trạng thái hữu hạn Finite State Machine (FSM)

• FSM loại Moore (phụ thuộc vào trạng thái)

• FSM loại Mealy (phụ thuộc vào tín hiệu vào)

• Các bước thiết kế:�Bước 1: Vẽ sơ đồ trạng thái

�Bước 2: Tối thiểu hoá số lượng các trạng thái

�Bước 3: Mã hoá trạng thái

72

�Bước 4: Lựa chọn flip-flop

�Bước 5: Thực hiện mạch logic tổ hợp

�Bước 6: Phân tích tín hiệu theo thời gian

@ETEDUT

Page 71: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine

• Ví dụ: Thiết kế một bộ đếm đến 4. Bộ đếm sẽ đếm khi cótín hiệu CE=1 (Count Enable) và ngừng đếm khi CE= 0.

• Bước 1: Vẽ sơ đồ trạng thái FSM• Bước 1: Vẽ sơ đồ trạng thái FSM

Count=0

CE=0 CE=0

Count=1CE=1

73

CE=0CE=0 Count=2

CE=1

Count=3

CE=1

CE=1@ETEDUT

Page 72: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine

Count=0

CE=0 CE=0

Count=1CE=1

Chỉ chuyển trạng thái tại sườn lên của xung nhịpTại sườn lên của xung nhịp, chỉ được phép 1 điều kiện chuyển trạng thái xảy ra

Count=0

CE=0 CE=0

Count=1CE=1

Count=0

CE=0 CE=0

Count=1CE=1

Count=0

CE=0 CE=0

Count=1CE=1

Count=0

CE=0 CE=0

Count=1CE=1

Count=0

CE=0CE=0

Count=1CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

Count=0

CE=0CE=0

Count=1CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

Count=0

CE=0CE=0

Count=1CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

Count=0

CE=0CE=0

Count=1CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

Count=0

CE=0CE=0

Count=1CE=1

Count=2

CE=1

Count=3

CE=1

CE=1

74

CE=1

1. Ta đang ở trạng thái “Count=0”

2. CE = 0: đợi ở chân của sườn lên của xung nhịp3. CE=1: đợi ở chân của 1 sườn lên khác nhưng chưa đếm4. Sườn lên của xung nhịp: chuyển sang trạng thái “Count=1”, CE vẫn =15. CE = 0: đợi ở chân của 1 sườn lên khác

6. Sườn lên của xung nhịp: chyển sang “Count=1”, với CE=0

CE=1CE=1CE=1CE=1

@ETEDUT

Page 73: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine

• Bước 2: Tối thiểu hoá số trạng thái

• Bước 3: Mã hoá các trạng thái

Q1Q0=00

CE=0 CE=0

Q1Q0=01CE=1

75

CE=0CE=0 Q1Q0=10

CE=1

Q1Q0=11

CE=1

CE=1@ETEDUT

Page 74: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine

• Bước 4: Chọn loại flip-flop. Ở đây để đơn giản ta chọnloại D

• Bước 5: Thực hiện mạch• Bước 5: Thực hiện mạch

76

@ETEDUT

Page 75: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine

• Chuyển FSM sang bảng trạng thái kế tiếp

Q1Q0=00

CE=0 CE=0

Q1Q0=01CE=1

Q1Q0=00

CE=0CE=0

Q1Q0=01

Q1Q0=10

CE=1

Q1Q0=11

CE=1

CE=1

Present state Next state

77

Present state Next state

Q1Q0 Q1nQ0n

CE=0 CE=1

00 00 01

01 01 10

10 10 11

11 11 00

@ETEDUT

Page 76: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine

• Xác định các hàm đầu vào flip-flop DPresent state Next state

Q1Q0 Q1nQ0n1 0 1n 0n

CE=0 CE=1

00 00 01

01 01 10

10 10 11

11 11 00

Q0

Excitation table

for D flip-flop Q0

78

0 0 1 1

0 1 0 1CE

Q1n=D1

Q0

Q1Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

for D flip-flop

⇒ D to be applied

is identical to Qn

0 1 1 0

1 0 0 1CE

Q0n=D0

Q0

Q1@ETEDUT

Page 77: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine

• Thực hiện:

Q1n=D1

Q0

Q1Q0n=D0

Q0

Q1

0 0 1 1

0 1 0 1CE

Q1n=D1 Q1

0 1 1 0

1 0 0 1CE

Q0n=D0 Q1

CE Q1 Q0

Q1nD1

Q1

79

Q0n

D1

Q’

D0

Q0

Q’

@ETEDUT

Page 78: ChuyenDe Design With FPGAs 2013 JPG Print

Finite State MachineFinite State Machine• Bước 6: Phân tích tín hiệu theo thời gian

CE Q1 Q0

QQ1

CE Q1 Q0

QQ1

CE Q1 Q0

QQ1

CE Q1 Q0

QQ1

CE Q1 Q0

QQ1

CE Q1 Q0

QQ1Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

80

Clk

CE

Q1

Q0

@ETEDUT

Page 79: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore

• Ví dụ: Thiết kế bộ đếm 4, đếm đến 3 thì báo

• Bước 1: Vẽ sơ đồ trạng thái FSM:

Count=0

Y=0

CE=0 CE=0

Count=1

Y=0

CE=1

81

CE=0CE=0 Count=2

Y=0

CE=1

Count=3

Y=1CE=1

CE=1@ETEDUT

Page 80: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore

• Đặc điểm:�Tín hiệu đầu ra được xác định tại mỗi trạng thái

�Tín hiệu ra chỉ phụ thuộc vào trạng thái hiện tại mà không phụ�Tín hiệu ra chỉ phụ thuộc vào trạng thái hiện tại mà không phụthuộc vào tín hiệu vào

�Do đó, giá trị tín hiệu ra được ghi ở bên trong vòng tròn biểudiễn trạng thái

82

@ETEDUT

Page 81: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore

• Bước 2: Tối thiểu hoá số lượng trạng thái

• Bước 3: Mã hoá trạng thái

Q1Q0=00

Y=0

CE=0 CE=0

Q1Q0=01

Y=0

CE=1

83

CE=0CE=0 Q1Q0=10

Y=0

CE=1

Q1Q0=11

Y=1CE=1

CE=1@ETEDUT

Page 82: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore

• Bước 4: Chọn loại flip-flop. Ở đây để đơn giản ta chọnloại D

• Bước 5: Thực hiện mạch• Bước 5: Thực hiện mạch

84

@ETEDUT

Page 83: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore

• Chuyển FSM sang bảng trạng thái kế tiếp

Q1Q0=00

CE=0 CE=0

Q1Q0=01CE=1Q1Q0=00

Y=0

CE=0CE=0

Q1Q0=01

Y=0

CE=1

Q1Q0=10

Y=0

CE=1

Q1Q0=11

Y=1CE=1

CE=1

Present state Next state Outputs

85

Present state Next state Outputs

Q1Q0 Q1nQ0n Y

CE=0 CE=1

00 00 01 0

01 01 10 0

10 10 11 0

11 11 00 1

Y chỉ phụ thuộc trạng tháihiện tại, không phụ

thuộc vào tín hiệu vào

@ETEDUT

Page 84: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore

• Xác định các hàm đầu vào flip-flop DPresent state Next state Outputs

Q1Q0 Q1nQ0n Y

CE=0 CE=1

Q1n=D1

Q0

Q1

Excitation table

for D flip-flop Q0n=D0

Q0

Q1

CE=0 CE=1

00 00 01 0

01 01 10 0

10 10 11 0

11 11 00 1

86

0 0 1 1

0 1 0 1CE

Q1

Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

for D flip-flop

⇒ D to be applied

is identical to Qn

0 1 1 0

1 0 0 1CE

Q1

0 0

0 1

Y

Q1

Q0

@ETEDUT

Page 85: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore

• Thực hiện mạch:

Q1n=D1

Q0

Q1Q0n=D0

Q0

Q1Y

Q0

0 0 1 1

0 1 0 1CE

Q1n=D1 Q1

0 1 1 0

1 0 0 1CE

Q0n=D0 Q1

CE Q1 Q0

Q1nD1

Q1

0 0

0 1

Y

Q1

Q0

Y

87

Q0n

D1

Q’

D0

Q0

Q’

@ETEDUT

Page 86: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MooreFSM loại Moore• Bước 6: Phân tích tín hiệu theo thời gian

CE Q1 Q0

QQ1

Y

CE Q1 Q0

QQ1

Y

CE Q1 Q0

QQ1

Y

CE Q1 Q0

QQ1

Y

CE Q1 Q0

QQ1

Y

CE Q1 Q0

QQ1

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

88

Clk

CE

Q1

Q0

Y

Danger for

Glitch!@

ETEDUT

Page 87: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy

• Ví dụ: Thiết kế bộ đếm 4, nếu tín hiệu đếm CE=1 và giátrị đếm =3 thì tín hiệu ra Y=1

• Bước 1: Vẽ sơ đồ trạng thái FSM:• Bước 1: Vẽ sơ đồ trạng thái FSM:

Count=0

CE=0/Y=0 CE=0/Y=0

Count=1CE=1/Y=0

89

CE=0/Y=0CE=0/Y=0 Count=2

CE=1/Y=0

Count=3

CE=1/Y=0

CE=1/Y=1@ETEDUT

Page 88: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy

• Đặc điểm:� Tín hiệu ra được xác định cho mỗi trạng thái và các tín hiệu vào

tại trạng thái đótại trạng thái đó

� Tín hiệu ra phụ thuộc vào trạng thái đầu hiện tại và các giá trịđầu vào tại trạng thái đó

� Do đó giá trị tín hiệu ra được ghi tại mũi tên chuyển trạng thái

90

@ETEDUT

Page 89: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy

• Bước 2: Tối thiểu hoá số lượng trạng thái

• Bước 3: Mã hoá trạng thái

Q1Q0=00

CE=0/Y=0 CE=0/Y=0

Q1Q0=01CE=1/Y=0

91

CE=0/Y=0CE=0/Y=0 Q1Q0=10

CE=1/Y=0

Q1Q0=11

CE=1/Y=0

CE=1/Y=1@ETEDUT

Page 90: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy

• Bước 4: Chọn loại flip-flop. Ở đây để đơn giản ta chọnloại D

• Bước 5: Thực hiện mạch• Bước 5: Thực hiện mạch

92

@ETEDUT

Page 91: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy

• Chuyển FSM sang bảng trạng thái kế tiếp

Q Q =00

CE=0/Y=0 CE=0/Y=0

Q Q =01CE=1/Y=0

Q1Q0=00

CE=0/Y=0CE=0/Y=0

Q1Q0=01CE=1/Y=0

Q1Q0=10

CE=1/Y=0

Q1Q0=11

CE=1/Y=0

CE=1/Y=1

Present state Next state/Outputs

93

Present state Next state/Outputs

Q1Q0 Q1nQ0n/Y

CE=0 CE=1

00 00/0 01/0

01 01/0 10/0

10 10/0 11/0

11 11/0 00/1

Y phụ thuộc vào trạng tháihiện tại, và phụ

thuộc vào cả tín hiệu vào

@ETEDUT

Page 92: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy• Xác định các hàm đầu vào flip-flop D

Present state Next state/Outputs

Q1Q0 Q1nQ0n/Y

CE=0 CE=1

Q1n=D1

Q0

Q1Excitation table

for D flip-flopQ0n=D0

Q0

Q1

CE=0 CE=1

00 00/0 01/0

01 01/0 10/0

10 10/0 11/0

11 11/0 00/1

94

0 0 1 1

0 1 0 1CE

Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

for D flip-flop

⇒ D to be applied

is identical to Qn

0 1 1 0

1 0 0 1CE

0 0 0 0

0 0 1 0CE

Y

Q0

Q1

@ETEDUT

Page 93: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy

• Thực hiện mạch:

Q1n=D1

Q0

Q1Q0n=D0

Q0

Q1Y

Q0

Q1

0 0 1 1

0 1 0 1CE

Q1n=D1 Q1

0 1 1 0

1 0 0 1CE

Q0n=D0 Q1

CE Q1 Q0

Q1nD1

Q1

0 0 0 0

0 0 1 0CE

Y Q1

Y

95

Q0n

D1

Q’

D0

Q0

Q’

@ETEDUT

Page 94: ChuyenDe Design With FPGAs 2013 JPG Print

FSM loại MealyFSM loại Mealy• Bước 6: Phân tích tín hiệu theo thời gian

CE Q1 Q0

Q1nQ1 Y

CE Q1 Q0

Q1nQ1 Y

CE Q1 Q0

Q1nQ1 Y

CE Q1 Q0

Q1nQ1 Y

CE Q1 Q0

Q1nQ1 Y

CE Q1 Q0

Q1nQ1 Y

CE Q1 Q0

Q1nQ1 Y

Q1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

YQ1n

Q0n

D1

Q1

Q’

D0

Q0

Q’

Y

96

Clk

CE

Q1

Q0

Y

Danger for

Glitch!@

ETEDUT

Page 95: ChuyenDe Design With FPGAs 2013 JPG Print

Mô hình FSM loại MooreMô hình FSM loại Moore

D

Clk

Q

Clock Next

State S*

Current

State SInputs I

Clk

S*=F(S,I)

Mạch logic tổ hợp

cho trạng thái kế

O=H(S)

Mạch logic tổ hợp cho tín hiệu ra

D

Clk

Q

Outputs

O

97

thái kế tiếp

hiệu ra

D

Clk

Q@ETEDUT

Page 96: ChuyenDe Design With FPGAs 2013 JPG Print

Mô hình FSM loại MealyMô hình FSM loại Mealy

D

Clk

Q

Clock Next State S* Current

State SInputs I

Clk

S*=F(S,I)

Mạch logic tổ hợp

cho trạng thái kế

tiếp

O=H(S,I)

Mạch logic tổ hợp cho tín hiệu ra

D

Clk

Q

Outputs

O

98

tiếp hiệu ra

D

Clk

Q@ETEDUT

Page 97: ChuyenDe Design With FPGAs 2013 JPG Print

TómTóm tắttắt: : CácCác bướcbước thiếtthiết kếkế FSMFSM

@ETEDUT

Page 98: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 1: Vẽ sơ đồ trạng thái FSMBước 1: Vẽ sơ đồ trạng thái FSM

• FSM được xây dựng từ bản miêu tả chi tiết bài toán• Lựa chọn loại FSM cho phù hợp: Moore hay Mealy• Vẽ trạng thái đầu tiên và các trạng thái tiếp theo dựa vào• Vẽ trạng thái đầu tiên và các trạng thái tiếp theo dựa vàođiều kiện chuyển trạng thái ...

100

@ETEDUT

Page 99: ChuyenDe Design With FPGAs 2013 JPG Print

Bước Bước 22: Tối thiểu hoá số lượng : Tối thiểu hoá số lượng trạng tháitrạng thái

• Mục đích: ít trạng thái đồng nghĩa với ít flip-flop

• Nguyên tắc:�2 FSM được coi là tương đương nếu như chúng cho cùng một

chuỗi tín hiệu ra với cùng một chuỗi tín hiệu vào

�2 trạng thái của FSM loại Moore có thể được thay thế bởi 1 trạngthái nếu như 2 trạng thái đó có cùng tín hiệu ra đồng thời có cùngtrạng thái kế tiếp khi có cùng tín hiệu vào

� 2 trạng thái của FSM loại Mealy có thể đựơc thay thế bới 1 trạng

101

� 2 trạng thái của FSM loại Mealy có thể đựơc thay thế bới 1 trạngthái nếu như chúng có cùng tín hiệu ra cho cùng tín hiệu vàođồng thời chúng có cùng trạng thái kế tiếp khi có cùng tín hiệuvào

@ETEDUT

Page 100: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 2: Tối thiểu hoá số lượng Bước 2: Tối thiểu hoá số lượng trạng tháitrạng thái

• Ví dụ:

NEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

s0 s4/1 s2/0 s1/1

s1 s2/0 s5/1 s4/1

s s /1 s /0 s /1

102

s2 s1/1 s0/0 s3/1

s3 s2/0 s5/1 s4/1

s4 s0/0 s5/1 s1/1

s5 s2/0 s4/1 s2/1

@ETEDUT

Page 101: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 2: Tối thiểu hoá số lượng Bước 2: Tối thiểu hoá số lượng trạng tháitrạng thái

• Xây dựng bảng như sau:

NEXT STATE / OUTPUTPRESENT NEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

s0 s4/1 s2/0 s1/1

s1 s2/0 s5/1 s4/1

s2 s1/1 s0/0 s3/1

s3 s2/0 s5/1 s4/1

s4 s0/0 s5/1 s1/1

s5 s2/0 s4/1 s2/1

s1

s

103

s5 s2/0 s4/1 s2/1s2

s3

s4

s5

s0 s1 s2 s3 s4

@ETEDUT

Page 102: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 2: Tối thiểu hoá số lượng Bước 2: Tối thiểu hoá số lượng trạng tháitrạng thái

• Xoá tất cả các tổ hợp trạng thái có tín hiệu ra khác nhaucho cùng tín hiệu vào

NEXT STATE / OUTPUTPRESENT NEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

s0 s4/1 s2/0 s1/1

s1 s2/0 s5/1 s4/1

s2 s1/1 s0/0 s3/1

s3 s2/0 s5/1 s4/1

s4 s0/0 s5/1 s1/1

s5 s2/0 s4/1 s2/1

s1

s

104

s5 s2/0 s4/1 s2/1s2

s3

s4

s5

s0 s1 s2 s3 s4

@ETEDUT

Page 103: ChuyenDe Design With FPGAs 2013 JPG Print

Bước Bước 22: Tối thiểu hoá số lượng : Tối thiểu hoá số lượng trạng tháitrạng thái

• Chỉ rõ những cặp trạng thái kế tiếp nào phải tương đươngđể cho cặp trạng thái đang xét cũng là tương đương

NEXT STATE / OUTPUTPRESENT NEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

s0 s4/1 s2/0 s1/1

s1 s2/0 s5/1 s4/1

s2 s1/1 s0/0 s3/1

s3 s2/0 s5/1 s4/1

s4 s0/0 s5/1 s1/1

s s /0 s /1 s /1

s1

1-41-41-41-41-41-41-4

105

s5 s2/0 s4/1 s2/1s2

s3

s4

s5

s0 s1 s2 s3 s4

1-4

1-3

1-4

1-3

OK

1-4

1-3

0-2

OK

1-4

1-3

4-5

2-4

0-2

OK

1-4

1-3

4-5

2-4

0-20-2

1-4

OK

1-4

1-3

4-5

2-4

4-5

2-4

0-20-2

1-4

OK

1-4

1-3

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-20-2

1-4

OK@ETEDUT

Page 104: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 2: Tối thiểu hoá số lượng Bước 2: Tối thiểu hoá số lượng trạng tháitrạng thái

• Xoá những cặp trạng thái mà không thể có cặp trạng tháikế tiếp tương đương

NEXT STATE / OUTPUTPRESENT

1-4

NEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

s0 s4/1 s2/0 s1/1

s1 s2/0 s5/1 s4/1

s2 s1/1 s0/0 s3/1

s3 s2/0 s5/1 s4/1

s4 s0/0 s5/1 s1/1

s s /0 s /1 s /1

s1

1-4: ?1-4: ?1-4: ?1-4: ?1-4: ?1-4: ?

106

1-4

1-3

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-20-2

1-4

OK

s5 s2/0 s4/1 s2/1s2

s3

s4

s5

s0 s1 s2 s3 s4

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-20-2

1-4

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2

1-4

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2

1-4

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2: ?

1-4: ?

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2: ?

1-4: ?

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2: ?

1-4: ?

OK@ETEDUT

Page 105: ChuyenDe Design With FPGAs 2013 JPG Print

Bước Bước 22: Tối thiểu hoá số lượng : Tối thiểu hoá số lượng trạng tháitrạng thái

• Lặp lại cho đến khi không còn xoá được cặp trạng thái nàonữa thì dừng

NEXT STATE / OUTPUTPRESENT NEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

s0 s4/1 s2/0 s1/1

s1 s2/0 s5/1 s4/1

s2 s1/1 s0/0 s3/1

s3 s2/0 s5/1 s4/1

s4 s0/0 s5/1 s1/1

s s /0 s /1 s /1

s1

1-4: ?1-4: ?1-4: ?1-4: ?

107

s5 s2/0 s4/1 s2/1s2

s3

s4

s5

s0 s1 s2 s3 s4

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2: ?

1-4: ?

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2: ?

1-4: ?

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2: ?

1-4: ?

OK

1-4: ?

1-3:OK

4-5

2-4

4-5

2-4

0-2, 4-5

1-2

0-2: ?0-2: ?

1-4: ?

OK Sô lượng trạng thái tối thiểu : 3{s0,s2}=u0

{s1,s3,s4}=u1

{s5}=u2@

ETEDUT

Page 106: ChuyenDe Design With FPGAs 2013 JPG Print

Bước Bước 22: Tối thiểu hoá số lượng : Tối thiểu hoá số lượng trạng tháitrạng thái

• Xây dựng bảng trạng thái mớiNEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

s0 s4/1 s2/0 s1/1

s1 s2/0 s5/1 s4/1

s2 s1/1 s0/0 s3/1

s3 s2/0 s5/1 s4/1

s4 s0/0 s5/1 s1/1

s5 s2/0 s4/1 s2/1

Sô lượng trạng thái tối thiểu : 3{s0,s2}=u0

{s1,s3,s4}=u1

{s5}=u2

108

NEXT STATE / OUTPUTPRESENT

STATE AB=00 AB=01 AB=10

u0 u1/1 u0/0 u1/1

u1 u0/0 u2/1 u1/1

u2 u0/0 u1/1 u0/1@

ETEDUT

Page 107: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng tháiBước 3: Mã hoá trạng thái

• n trạng thái cần ít nhất log2n flip-flops.

• Có tât cả n! khả năng mã hoá (n lựa chọn cho trạng tháiđầu tiên, n-1 cho trạng thái thứ 2 ...)đầu tiên, n-1 cho trạng thái thứ 2 ...)

No. s0 s1 s2 s3 No. s0 s1 s2 s3

1 00 01 10 11 13 10 00 01 11

2 00 01 11 10 14 10 00 11 01

3 00 10 01 11 15 10 01 00 11

4 00 10 11 01 16 10 01 11 00

5 00 11 01 10 17 10 11 00 01

109

5 00 11 01 10 17 10 11 00 01

6 00 11 10 01 18 10 11 01 00

7 01 00 10 11 19 11 00 01 10

8 01 00 11 10 20 11 00 10 01

9 01 10 00 11 21 11 01 00 10

10 01 10 11 00 22 11 01 10 00

11 01 11 00 10 23 11 10 00 01

12 01 11 10 00 24 11 10 01 00@

ETEDUT

Page 108: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng tháiBước 3: Mã hoá trạng thái

• Có cần thiết phải lựa chọn cách mã hoá?�Có, bởi mỗi sự lựa chọn sẽ cho ta độ phức tạp của mạch tổ hợp

cũng như trễ của toàn bộ mạchcũng như trễ của toàn bộ mạch

• Các kiểu mã hoá thường dùng:�Straightforward

�Minimum-bit-change

�One-hot

110

@ETEDUT

Page 109: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng thái Bước 3: Mã hoá trạng thái StraightforwardStraightforward

• Kiểu mã hoá này sử dụng giá trị nhị phân của thứ tự trạngthái để làm mã cho trạng thái đó (s0→000, s5→101, …)

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

s0 s0/0 s1/0 s2/1

s1 s1/0 s2/0 s0/0

s2 s2/0 s0/1 s1/0

111

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0@

ETEDUT

Page 110: ChuyenDe Design With FPGAs 2013 JPG Print

Bước Bước 33: Mã hoá trạng thái : Mã hoá trạng thái MinimumMinimum--bitbit--changechange

• Mã sẽ được gán cho trạng thái sao cho tổng số bít thay đổikhi chuyển trạng thái của tất cả các trạng thái là nhỏ nhất

• Phương pháp mã hoá này hay đựơc sử dụng khi muốn tối• Phương pháp mã hoá này hay đựơc sử dụng khi muốn tốithiểu hoá kích thước chip cũng như công suất tiêu thụ

00 011

00 011

112

00 01

10111

22

00 01

11101

11

Straightforward Minimum-bit-change

Gray code

counter@ETEDUT

Page 111: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng thái Bước 3: Mã hoá trạng thái MinimumMinimum--bitbit--changechange

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

s0 s0/0 s1/0 s2/1

s1 s1/0 s2/0 s0/0

0 1

2

s1 s1/0 s2/0 s0/0

s2 s2/0 s0/1 s1/0

113

2

Possible

encoding:

s0=00

s1=10

s2=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

00 00/0 10/0 11/1

10 10/0 11/0 00/0

11 11/0 00/1 10/0@

ETEDUT

Page 112: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng thái Bước 3: Mã hoá trạng thái OneOne--hothot

• Mỗi trạng thái ứng với một flip-flop, Q của 1 FF =1, Qcủa các FF khác =0

• Dùng khi số lượng trạng thái nhỏ• Dùng khi số lượng trạng thái nhỏ

• Rất dễ thực hiện, mạch tổ hợp đơn giản

• Cấu trúc của FPGA rất phù hợp với kiểu mã hoá này

114

@ETEDUT

Page 113: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng thái Bước 3: Mã hoá trạng thái OneOne--hothotNEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

s0 s0/0 s1/0 s2/1

s1 s1/0 s2/0 s0/0

s s /0 s /1 s /0

One-hot encoding

s0=001

s1=010

s2=100

s2 s2/0 s0/1 s1/0

115

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

001 001/0 010/0 100/1

010 010/0 100/0 001/0

100 100/0 001/1 010/0@

ETEDUT

Page 114: ChuyenDe Design With FPGAs 2013 JPG Print

Bước Bước 33: Mã hoá trạng thái : Mã hoá trạng thái OneOne--hothot

CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

Y

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

Q0

D

Q1

D

Q2

DP C C

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

116

C

D

@ETEDUT

Page 115: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng thái Bước 3: Mã hoá trạng thái OneOne--hothot

• Mã hoá One-hot với flip-flop D�Mỗi một mũi tên chuyển trạng thái tới một trạng thái cần một

cổng ANDcổng AND

117

@ETEDUT

Page 116: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng thái Bước 3: Mã hoá trạng thái OneOne--hothot

CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0CD=10

Y=1

s0

CD=0X

Y=0

s1

CD=10

Y=0

CD=0X

Y=0

s2

CD=10

Y=0

CD=0X

Y=0

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

Q0

S R

Q1

S R

Q2

S R Y

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

P C C

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

s0 s1

CD=11

Y=0

s2

CD=11

Y=0

CD=11

Y=1

118

C

D

@ETEDUT

Page 117: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 3: Mã hoá trạng thái Bước 3: Mã hoá trạng thái OneOne--hothot

• Mã hoá One-hot với flip-flop SR :� Mỗi một mũi tên chuyển trạng thái xuất phát từ một trạng thái

khác cần một cổng AND tại đầu vào Skhác cần một cổng AND tại đầu vào S

�Mỗi một mũi tên hướng tới các trạng thái khác cần 1 cổng ANDtại đầu vào R

119

@ETEDUT

Page 118: ChuyenDe Design With FPGAs 2013 JPG Print

Bước Bước 44: Lựa chọn loại Flip: Lựa chọn loại Flip--flopflop

• JK flip-flop�Đây là loại flip-flop đắt nhất

�Khó thiết kế nhất�Khó thiết kế nhất

� Có nhiều trạng thái don’t cares nên mạch tổ hợp nhanh và rẻnhất

• SR flip-flop�flip-flop rẻ

�Khó thiết kế

120

�Khó thiết kế

@ETEDUT

Page 119: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 4: Lựa chọn loại FlipBước 4: Lựa chọn loại Flip--flopflop

• D flip-flop�flip-flop rẻ

�Dễ thiết kế nhất�Dễ thiết kế nhất

�Không có don’t cares dẫn tới mạch tổ hợp phức tạp và chậm nhất

• T flip-flop�flip-flop rẻ

�Dễ thiết kế

�Không có don’t cares dẫn tới mạch tổ hợp phức tạp và chậm nhất

121

�Không có don’t cares dẫn tới mạch tổ hợp phức tạp và chậm nhất

�Thường đựơc dùng để thiết kế bộ đếm và bộ chia tần@ETEDUT

Page 120: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp D fliphợp D flip--flopflop

• Xác định các hàm đầu vào flip-flop DY

Q0

Q1NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

Excitation table

for D flip-flop

0 0 x 0

0 0 x 0

1 0 x 0

0 0 x 1C

D

Q1n=D1

Q0

Q Q0n=D0

Q0

Q

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

122

Q Q(next) D

0 0 0

0 1 1

1 0 0

1 1 1

for D flip-flop

⇒ D to be applied

is identical to Qn

0 0 x 1

0 0 x 1

Q1n=D1 Q1

1 0 x 0

0 1 x 0C

D

0 1 x 0

0 1 x 0

Q0n=D0 Q1

0 0 x 1

1 0 x 0C

D

@ETEDUT

Page 121: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp D fliphợp D flip--flopflop

0 0 x 0

0 0 x 0

Y

Q0

Q1

0 0 x 1

0 0 x 1

Q1n=D1

Q0

Q1

0 1 x 0

0 1 x 0

Q0n=D0

Q0

Q1

0 0 x 0

1 0 x 0

0 0 x 1C

D0 0 x 1

1 0 x 0

0 1 x 0C

D0 1 x 0

0 0 x 1

1 0 x 0C

D

Q1

D

Q0

D Y

Clr Clr

123

C

D@

ETEDUT

Page 122: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp T fliphợp T flip--flopflop

• Xác định các hàm đầu vào TY

Q0

Q1NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

Excitation table

for T flip-flop

0 0 x 0

0 0 x 0

1 0 x 0

0 0 x 1C

D

T1

Q0

Q T0

Q0

Q

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

124

Q Q(next) T

0 0 0

0 1 1

1 0 1

1 1 0

for T flip-flop

0 0 x 0

0 0 x 0

T1 Q1

1 0 x 1

0 1 x 1C

D

0 0 x 0

0 0 x 0

T0 Q1

0 1 x 1

1 1 x 0C

D

@ETEDUT

Page 123: ChuyenDe Design With FPGAs 2013 JPG Print

0 0 x 0

0 0 x 0

T0

Q0

Q1

0 0 x 0

0 0 x 0

T1

Q0

Q1

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp T fliphợp T flip--flopflop

0 0 x 0

0 0 x 0

Y

Q0

Q1

0 0 x 0

0 1 x 1

1 1 x 0C

D0 0 x 0

1 0 x 1

0 1 x 1C

D0 0 x 0

1 0 x 0

0 0 x 1C

D

Q1

T

Q0

T YCost: 32

Clr Clr

125

C

D@

ETEDUT

Page 124: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp SR fliphợp SR flip--flopflop

• Xác định các hàm đầu vào S và RNEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

Excitation table

for SR flip-flop

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

S1

Q0

Q R1

Q0

Q

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

126

for SR flip-flop

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

S1 Q1

C

D

R1 Q1

C

D

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

0

0

x

x

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

0 0

0 0

x x

x x

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

0 0 x

0 0 x

x x 0

x x 0

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

0 0 x

0 0 x

0

x x 0

x x 0

x

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

0 0 x

0 0 x

0 1

x x 0

x x 0

x 0

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

0 0 x

0 0 x

0 1 0

x x 0

x x 0

x 0 1

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

0 0 x

0 0 x

1 0 0

0 1 0

x x 0

x x 0

0 x 1

x 0 1

0 0 x x

0 0 x x

1 0 x 0

0 1 x 0

x x x 0

x x x 0

0 x x 1

x 0 x 1@

ETEDUT

Page 125: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp SR fliphợp SR flip--flopflop

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

Y

Q0

Q1NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

Excitation table

for SR flip-flop

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

S0

Q0

Q R0

Q0

Q

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

0 0 x 0

0 0 x 0

1 0 x 0

0 0 x 1C

D

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

127

for SR flip-flop

Q Q(next) S R

0 0 0 x

0 1 1 0

1 0 0 1

1 1 x 0

S0 Q1

C

D

R0 Q1

C

D

0 x 0

0 x 0

x 0 x

x 0 x

0 x 0

0 x 0

1 0 0

x 0 x

x 0 x

0 1 x

0 x 0

0 x 0

0 0 1

1 0 0

x 0 x

x 0 x

x 1 0

0 1 x

0 x x 0

0 x x 0

0 0 x 1

1 0 x 0

x 0 x x

x 0 x x

x 1 x 0

0 1 x x@

ETEDUT

Page 126: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp SR fliphợp SR flip--flopflop

S1

Q0

Q1R1

Q0

Q1

0 0 x x

0 0 x x

x x x 0

x x x 0

C

D

C

D0 0 x x

1 0 x 0

0 1 x 0

x x x 0

0 x x 1

x 0 x 1

Q1

S R

Q0

S R

CC

128

C

D

@ETEDUT

Page 127: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp SR fliphợp SR flip--flopflop

S0

Q0

Q1R0

Q0

Q1

0 x x 0

0 x x 0

x 0 x x

x 0 x x

C

D

C

D

Q1

S R

Q0

S R

CC

0 x x 0

0 0 x 1

1 0 x 0

x 0 x x

x 1 x 0

0 1 x x

129

C

D

@ETEDUT

Page 128: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp SR fliphợp SR flip--flopflop

S0

Q0

Q1R0

Q0

Q1

0 x x 0

0 x x 0

x 0 x x

x 0 x x

0 0 x 0

0 0 x 0

Y

Q0

Q1

C

D

C

D

Q1

S R

Q0

S R

CC

0 x x 0

0 0 x 1

1 0 x 0

x 0 x x

x 1 x 0

0 1 x x

0 0 x 0

1 0 x 0

0 0 x 1C

D

Y

130

C

D

@ETEDUT

Page 129: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp JK fliphợp JK flip--flopflop

• Xác định các hàm đầu vào J và KNEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

Excitation table

for JK flip-flop

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

J1

Q0

Q K1

Q0

Q

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

131

for JK flip-flop

Q Q(next) J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0

J1 Q1

C

D

K1 Q1

C

D

Q Q(next) J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0

0

0

x

x

0 0

0 0

x x

x x

Q Q(next) J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0

0 0 x

0 0 x

x x 0

x x 0

Q Q(next) J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0

0 0 x

0 0 x

0 1 x

x x 0

x x 0

x x 1

Q Q(next) J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0

0 0 x

0 0 x

1 0 x

0 1 x

x x 0

x x 0

x x 1

x x 1

0 0 x x

0 0 x x

1 0 x x

0 1 x x

x x x 0

x x x 0

x x x 1

x x x 1@

ETEDUT

Page 130: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp JK fliphợp JK flip--flopflop

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

NEXT STATE / OUTPUTPRESENT

STATE CD=0X CD=10 CD=11

Y

Q0

Q1

Excitation table

for JK flip-flop

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

J0

Q0

Q K0

Q0

Q

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

STATE CD=0X CD=10 CD=11

00 00/0 01/0 10/1

01 01/0 10/0 00/0

10 10/0 00/1 01/0

0 0 x 0

0 0 x 0

1 0 x 0

0 0 x 1C

D

132

for JK flip-flop

Q Q(next) J K

0 0 0 x

0 1 1 x

1 0 x 1

1 1 x 0

J0 Q1

C

D

K0 Q1

C

D

0 x 0

0 x 0

x 0 x

x 0 x

0 x 0

0 x 0

1 x 0

x 0 x

x 0 x

x 1 x

0 x 0

0 x 0

0 x 1

1 x 0

x 0 x

x 0 x

x 1 x

x 1 x

0 x x 0

0 x x 0

0 x x 1

1 x x 0

x 0 x x

x 0 x x

x 1 x x

x 1 x x@

ETEDUT

Page 131: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp JK fliphợp JK flip--flopflop

J1

Q0

Q1K1

Q0

Q1

0 0 x x

0 0 x x

x x x 0

x x x 0

C

D

C

D

Q1

J K

Q0

J K

CC

0 0 x x

1 0 x x

0 1 x x

x x x 0

x x x 1

x x x 1

133

C

D

@ETEDUT

Page 132: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 5: Thực hiện mạch logic tổ Bước 5: Thực hiện mạch logic tổ hợp JK fliphợp JK flip--flopflop

J0

Q0

Q1K0

Q0

Q1

0 x x 0

0 x x 0

x 0 x x

x 0 x x

0 0 x 0

0 0 x 0

Y

Q0

Q1

C

D

C

D

Q1

J K

Q0

J K

CC

0 x x 0

0 x x 1

1 x x 0

x 0 x x

x 1 x x

x 1 x x

0 0 x 0

1 0 x 0

0 0 x 1C

D

Y

134

C

D

@ETEDUT

Page 133: ChuyenDe Design With FPGAs 2013 JPG Print

Bước 6: Phân tích tín hiệu theo Bước 6: Phân tích tín hiệu theo thời gianthời gian

• Xác định tần số tối đa:�Tần số tối đa = 1/trễ của đường dài nhất

� Đường dài nhất là đường có trễ mạch tổ hợp lớn nhất giữa hai� Đường dài nhất là đường có trễ mạch tổ hợp lớn nhất giữa haisườn xung nhịp

�Ví dụ:

Q1

D

Q0

D Y

Clr ClrQ1

D

Q0

D Y

Clr Clr

135

C

D

C

D@

ETEDUT

Page 134: ChuyenDe Design With FPGAs 2013 JPG Print

Thiết kế mạch số tuần tựThiết kế mạch số tuần tựCác mạch số tuần tự cơ bảnCác mạch số tuần tự cơ bản

• Thanh ghi (Registers)

• Thanh ghi dịch (Shift registers)

• Bộ đếm (Counter)

• Tệp thanh ghi (Register files)

• Cấu trúc hàng đợi vào sau ra trước LIFO (stack)

• Cấu trúc hàng đợi vào trước ra trước FIFO

136

@ETEDUT

Page 135: ChuyenDe Design With FPGAs 2013 JPG Print

4. 4. NgônNgôn ngữngữ mômô tảtảphầnphần cứngcứng VHDLVHDL

@ETEDUT

Page 136: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDL

• VHDL = VHSIC Hardware Description Language

• VHSIC = Very High Speed Integrated Circuit

• Là ngôn ngữ lập trình dùng để mô tả hoạt động của hệthống số

• Được quy định trong chuẩn IEEE 1076 từ năm 1983

• Các ngôn ngữ mô tả phần cứng khác:�Verilog

138

�Verilog

�Abel @ETEDUT

Page 137: ChuyenDe Design With FPGAs 2013 JPG Print

library IEEE; -- Su dung thu vien chuan IEEEuse IEEE.STD_LOGIC_1164.ALL; --Su dung tat ca cac thanh phan trong goi STD_LOGIC_1164

entity hex2led isPort ( HEX : in std_logic_vector(3 downto 0);

LED : out std_logic_vector(6 downto 0));end hex2led;-- Khai bao hoat dong cua hex2Ledarchitecture Behavioral of hex2led is

HEXEntity

32

654

beginwith HEX SELect

LED<= "1111001" when "0001", --1"0100100" when "0010", --2"0110000" when "0011", --3"0011001" when "0100", --4"0010010" when "0101", --5"0000010" when "0110", --6"1111000" when "0111", --7"0000000" when "1000", --8"0010000" when "1001", --9

HEX LEX

Entity

hex2led

210

0

3

12

4

139

"0010000" when "1001", --9"0001000" when "1010", --A"0000011" when "1011", --b"1000110" when "1100", --C"0100001" when "1101", --d"0000110" when "1110", --E"0001110" when "1111", --F"1000000" when others; --0

end Behavioral;@

ETEDUT

Page 138: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLVVí dụ 1í dụ 1

• Thiết kế mạch ‘Test’ với 3 đầu vào 8-bit (In1, In2, In3) vàhai đầu ra 1 bit (Out1, Out2). Out1=‘1’ khi In1=In2 vàOut2=‘1’ khi In1 = In3Out2=‘1’ khi In1 = In3

In1

In2

Test

Out1Compare

A

B

EQ

140

In2

In3 Out2

Compare

A

B

EQ

Test là một khối gồm 2 bản copy của khối compare@

ETEDUT

Page 139: ChuyenDe Design With FPGAs 2013 JPG Print

Compare

Giới thiệu về VHDLGiới thiệu về VHDLVVí dụ 1í dụ 1

A[0] XNOR

Thiết kế khối compare dùng mạch tổ hợp

A

B

EQ

A[0]

B[0]

A[1]

B[1]

A[7]

EQ

XNOR

AND

141

BA[7]

B[7]@ETEDUT

Page 140: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLVVí dụ í dụ 11

• Thiết kế khối compare dùng VHDL

- -Eight bit comparator

‘Entity’ xác định giao diệnvới bên ngoài của khối cần thiết kế

- -Eight bit comparator

entity Compare is

port(A,B: in bit_vector(0 to 7);

EQ: out bit);

end Compare;

architecture Behav1 of Compare is

begin

EQ <= ‘1’ when (A=B) else ‘0’;

end Behav1;

đầu vào và ra được gọi là port

‘Architecture’ miêu tả hoạt độngvà cấu trúc bên trong của

khối cần thiết kế

142

end Behav1;khối cần thiết kế

Chú ý:-Một entity có thể có nhiều architecture, mỗi architecture là mộtcách thể hiện khác nhau của cùng một chức năng

- Các Ports là vector có chiều: vào (in), ra (out), hoặc cả vào cả ra (inout)@

ETEDUT

Page 141: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLComponent và InstantiationComponent và Instantiation

• Biểu diễn Test bằng VHDL

entity Test isentity Test is

port( In1,In2,In3: in bit_vector(0 to 7);

Out1,Out2: out bit);

end Test;

architecture Struct1 of Test is

component Comparator is

port(X,Y: in bit_vector(0 to 7);

Z: out bit);

end component;

2 bản copy của cùng mộtcomponent

‘Comparator’

143

end component;

begin

Compare1: Comparator port map (X=>In1, Y=>In2, Z=>Out1);

Compare2: Comparator port map (X=>In1,Y=>In3,Z=>Out2);

end Struct1;

‘Comparator’

Chú ý:- Hai bản comparator chạy song song với nhau !!!

- Đây là architecture miêu tả cấu trúc của entity Test@

ETEDUT

Page 142: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLCấu hình (Configuration)Cấu hình (Configuration)

• Khi một entity có nhiều architectures, ta sẽ xử dụngarchitecture nào?

• Làm thế nào để gắn ‘Components’ với ‘Entities’?• Làm thế nào để gắn ‘Components’ với ‘Entities’?

-- Configuration information: architecture selection

-- and component-entity binding

configuration Build1 of Test is

for Struct1

for Compare1: Comparator use entity Compare(Behav1)

port map (A => X, B => Y, EQ => Z);

144

for Compare1: Comparator use entity Compare(Behav1)

port map (A => X, B => Y, EQ => Z);

end for;

for others: Comparator use entity Compare(Behav1)

port map (A => X, B => Y, EQ => Z);

end for;

end for;

end Build1;@

ETEDUT

Page 143: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLKhai báo Entity và ArchitectureKhai báo Entity và Architecture

ENTITY:

entity Entity_name isentity Entity_name isport(Signal_name: in Signal_type;

Signal_name: out Signal_type);end Entity_name;

ARCHITECTURE:

145

architecture Architecture_name of Entity_name isKhai báo các tín hiệu cục bộ;Khai báo các components;

beginCác câu lệnh;

end Architecture_name;@

ETEDUT

Page 144: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLKhai bKhai báo component áo component

COMPONENT:

component Component_name is

port(Signal_name: in Signal_type;

Signal_name: out Signal_type);

end component;end component;

Khai báo copy của COMPONENT :

Instance_name: component Component_nameport map (Signal_list);

146

Hoặc cách thứ 2, copy trực tiếp:

Instance_name: entity Entity_name(Architecture_name)port map (Signal_list);

@ETEDUT

Page 145: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLKhai bKhai báo cấu hìnháo cấu hình

CONFIGURATION:

configuration Config_name of Entity_name is

for Architecture_namefor Architecture_name

for Instance_name: Component_name use entity

Entity_name(Architecture_name)

port map (Signal_list);

end for;

end for;

end Config_name;

147

@ETEDUT

Page 146: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLVí dụ 2Ví dụ 2

• Biểu diễn cổng AND bằng VHDL

A

BY

B

C

Y

-- 3-input AND gate

entity AND3 is

port ( A,B,C: in bit;

Y: out bit);

end AND3;

148

architecture RTL of AND3 is

begin

Y <= ‘1’ when ((A=‘1’) and (B=‘1’) and (C=‘1’)) else ‘0’;

end RTL;

@ETEDUT

Page 147: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLVí dụ 2Ví dụ 2

• Biểu diễn cổng OR bằng VHDL

A

BY

B

C

Y

-- 3-input OR gate

entity OR3 is

port ( A,B,C: in bit;

Y: out bit);

end OR3;

149

architecture RTL of OR3 is

begin

Y <= ‘0’ when ((A=‘0’) and (B=‘0’) and (C=‘0’)) else ‘1’;

end RTL;

@ETEDUT

Page 148: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLVí dụ 2Ví dụ 2

• Biểu diễn cổng INV bằng VHDL

A Y

-- INV gate

entity INV is

port ( A: in bit;

Y: out bit);

end INV;

A Y

150

architecture RTL of INV is

begin

Y <= ‘1’ when (A=‘0’) else ‘0’;

end RTL;

@ETEDUT

Page 149: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLVí dụ 3Ví dụ 3

• Thiết kế bộ MUX 2-1 dùng VHDL

AA

S

BY

entity MUX21 is

port ( A,B,S: in bit;

Y: out bit);

end MUX21;

151

architecture Behav of MUX21 is

begin

Y <= A when (S=‘1’) else B;

end Behav;

@ETEDUT

Page 150: ChuyenDe Design With FPGAs 2013 JPG Print

architecture Struct of MUX21 is

signal U,V,W : bit;

Giới thiệu về VHDLGiới thiệu về VHDLVí dụ 3Ví dụ 3

A

BY

signal U,V,W : bit;

component AND2 is

port ( X,Y: in bit;

Z: out bit);

end component;

component OR2 is

port ( X,Y: in bit;

Z: out bit);

end component;

component INV is

S

A

S Y

U V

W

152

component INV is

port ( X: in bit;

Z: out bit);

end component;

begin

Gate1: INV port map (X=>S,Z=>U);

Gate2: AND2 port map (X=>A,Y=>S,Z=>W);

Gate3: AND2 port map (X=>U,Y=>B,Z=>V);

Gate4: OR2 port map (X=>W,Y=>V,Z=>Y);

end Struct;

B

U V

@ETEDUT

Page 151: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLVí dụ 3Ví dụ 3

• Giả sử ta muốn sử dụng các cổng AND, OR và INV ở vídụ 2 trong MUX21

configuration Use3InputGates of MUX21 is

for Behav

end for;

for Struct

for Gate1:INV use entity INV(RTL)

port map (A=>X,Y=>Z);

end for;

for All:AND2 use entity AND3(RTL)

port map (A=>X,B=>Y,C=>’1’,Y=>Z);

Entities

A

B

C

Y

A Y

153

for All:AND2 use entity AND3(RTL)

port map (A=>X,B=>Y,C=>’1’,Y=>Z);

end for;

for Gate4:OR2 use entity OR3(RTL)

port map (A=>X,B=>Y,C=>’0’,Y=>Z);

end for;

end for;

end Use3InputGates;

Components

X

Y

Z

X Z@

ETEDUT

Page 152: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLTạo TTạo Testbenchestbench

• Testbench là entity dùng để mô phỏng và kiểm tra thiết kế

AY

entity Testbench is

end Testbench;MUX21

A

BY

S

end Testbench;

Testbench không có port

architecture BehavTest of Testbench is

Signal In1,In2,Select,Out : bit;

begin

mux21_copy: entity MUX21(Behav) port map (In1, In2, Select, Out);

Thu: process is

154

Thu: process is

begin

In1<=‘0’;In2<=‘1’;Select<=‘0’; wait for 20 ns;

Select<=‘1’; wait for 20 ns;

In1<=‘1’;In2<=‘0’; wait for 20 ns;

...

end process;

end BehavTest;@

ETEDUT

Page 153: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLSSử dụng lạiử dụng lại

• Thông thường, các bộ phận của thiết kế này có thể đượcdùng lại trong các thiết kế khác

• Các sản phẩm công nghiệp thường bao gồm 95% bộ phận• Các sản phẩm công nghiệp thường bao gồm 95% bộ phậndùng lại và chỉ có 5% là phải thiết kế mới

• VHDL khuyến khích dùng lại bằng khái niệm ‘Packages’

• Một ‘Package’ chứa các định nghĩa về hằng số, khai báocomponent, các kiểu dữ liệu của người sử dụng, cácchương trình con viết bằng VHDL

155

chương trình con viết bằng VHDL

• Package được cất ở trong ‘Library’: library thực chất làmột thư mục

@ETEDUT

Page 154: ChuyenDe Design With FPGAs 2013 JPG Print

Giới thiệu về VHDLGiới thiệu về VHDLSSử dụng lạiử dụng lại

Package interface declaration:

package Package_name is

-- constants

-- user defined types-- user defined types

-- component declarations

-- sub programs

end Package_name;

How to use a package?

156

How to use a package?

use Library_name.Package_name.all;

U1: entity Package_name.Entity_name(Architecture_name);

@ETEDUT

Page 155: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:CCác kiểu dữ liệu đã được định nghĩaác kiểu dữ liệu đã được định nghĩa

package Standard is

type Bit is (‘0’,’1’);type Bit is (‘0’,’1’);

type Boolean is (False, True);

type Character is (--ASCII set);

type Integer is range implementation_defined;

type Real is range implementation_defined;

type Bit_vector is (--array of bits);

type String is (--array of characters);

type Time is range implementation_defined;

end Standard;

157

Bit, Boolean và Character là kiểu dữ liệu liệt kê@ETEDUT

Page 156: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:CCác kiểu dữ liệu đã được định nghĩaác kiểu dữ liệu đã được định nghĩa

Ví dụ về khai báo các kiểu số nguyên:type Year is range 0 to 99;

type Memory_address is range 65535 downto 0;type Memory_address is range 65535 downto 0;

Ví dụ về khai báo các kiểu số thựctype Probability is range 0.0 to 1.0;

type Input_level is range -5.0 to 5.0;

Khai báo bit_vector, giá trị được đặt trong dấu nháy képconstant State1: bit_vector(4 downto 0) := “00100”;

158

constant State1: bit_vector(4 downto 0) := “00100”;

Kiểu chuỗi String là một chuỗi ký tự characters; giá trị của nóđược đặt trong dấu nháy kép

constant Error_message: string

:= “Unknown error: ask your poor sysop for help”;

MSB, bit 4 LSB@ETEDUT

Page 157: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:CCác kiểu dữ liệu đã được định nghĩaác kiểu dữ liệu đã được định nghĩa

ARCHITECTURE test OF test ISBEGINPROCESS(X)

ARCHITECTURE test OF test ISSIGNAL a : REAL;

PROCESS(X)VARIABLE a : INTEGER;BEGIN

a := 1; --Ok 1a := -1; --Ok 2a := 1.0; --error 3

END PROCESS;END test;

SIGNAL a : REAL;BEGIN

a <= 1.0; --Ok 1a <= 1; --error 2a <= -1.0E10; --Ok 3a <= 1.5E-20; --Ok 4a <= 5.3 ns; --error 5

END test;

159

@ETEDUT

Page 158: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:CCác kiểu dữ liệu đã được định nghĩaác kiểu dữ liệu đã được định nghĩa

Kiểu Time là kiểu vật lý:type Time is range implementation_defined

units

fs; Primary unit:fs;

ps = 1000 fs;

ns = 1000 ps;

us = 1000 ns;

ms = 1000 us;

sec = 1000 ms;

min = 60 sec;

hr = 60 min;

end units;

Primary unit:

resolution limit

Secondary units

160

Được sử dụng rất nhiều trong chạy mô phỏngwait for 20 ns;

constant Sample_period: time := 2 ms;

constant Clock_period: time := 50 ns;

@ETEDUT

Page 159: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:CCác kiểu dữ liệu các kiểu dữ liệu của người sử dụngủa người sử dụng

Người sử dụng có thể định nghĩa kiểu vật lý như sau:type Length is range 0 to 1E9

units

um;

Primary unit:

resolution limitum;

mm = 1000 um;

m = 1000 mm;

km = 1000 m;

mil = 254 um;

inch = 1000 mil;

foot = 12 inch;

yard = 3 foot;

end units;

resolution limit

Metric secondary units

Imperial secondary units

161

@ETEDUT

Page 160: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:KKiểu liiểu liệt kê ệt kê ccủa người sử dụngủa người sử dụng

Người sử dụng có thể định nghĩa kỉêu liệt kê như sau:

type FSM_states is (reset, wait, input, calculate, output);

constant reset: bit_vector := “10000”;

constant wait: bit_vector := “01000”;

constant input: bit_vector := “00100”;

constant calculate: bit_vector := “00010”;

constant output: bit_vector := “00001”;

162

constant output: bit_vector := “00001”;

@ETEDUT

Page 161: ChuyenDe Design With FPGAs 2013 JPG Print

PACKAGE example ISTYPE current IS RANGE 0 TO 1000000000UNITS

na; --nano ampsua = 1000 na; --micro ampsma = 1000 ua; --milli ampsa = 1000 ma; --amps

END UNITS;TYPE load_factor IS (small, med, big );TYPE load_factor IS (small, med, big );END example;

USE WORK.example.ALL;ENTITY delay_calc IS

PORT ( out_current : OUT current;load : IN load_factor;delay : OUT time);

END delay_calc;ARCHITECTURE delay_calc OF delay_calc ISBEGIN

delay <= 10 ns WHEN (load = small) ELSE

163

delay <= 10 ns WHEN (load = small) ELSEdelay <= 20 ns WHEN (load = med) ELSEdelay <= 30 ns WHEN (load = big) ELSEdelay <= 10 ns;out_current <= 100 ua WHEN (load = small)ELSEout_current <= 1 ma WHEN (load = med) ELSEout_current <= 10 ma WHEN (load = big) ELSEout_current <= 100 ua;

END delay_calc;@

ETEDUT

Page 162: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:KKiểu miểu mảng arrayảng array

type 1D_array is array (1 to 10) of integer;

type 2D_array is array (5 downto 0, 1 to 10) of real;

TYPE data_bus IS ARRAY(0 TO 31) OF BIT;TYPE data_bus IS ARRAY(0 TO 31) OF BIT;

VARIABLE X: data_bus;VARIABLE Y: BIT;Y := X(0);Y := X(15);

164

@ETEDUT

Page 163: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:KKiểu biểu bản ghi recordản ghi record

TYPE optype IS ( add, sub, mpy, div, jmp );

TYPE instruction ISPROCESS(X)

TYPE instruction ISRECORD

opcode : optype;src : INTEGER;dst : INTEGER;

END RECORD;

PROCESS(X)VARIABLE inst : instruction;VARIABLE source, dest : INTEGER;VARIABLE operator : optype;BEGIN

source := inst.src; --Ok line 1dest := inst.src; --Ok line 2source := inst.opcode; --error line 3

165

source := inst.opcode; --error line 3operator := inst.opcode; --Ok line 4inst.src := dest; --Ok line 5inst.dst := dest; --Ok line 6inst := (add, dest, 2); --Ok line 7inst := (source); --error line 8

END PROCESS;@

ETEDUT

Page 164: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:Standard logicStandard logic

library IEEE;

use IEEE.Std_logic_1164.All;

type std_logic is (type std_logic is (

‘U’, -- uninitialized e.g. after power-up

‘X’, -- strongly driven unknown e.g. after setup violation

‘0’, -- strongly driven logic zero

‘1’, -- strongly driven logic one

‘Z’, -- high impedance e.g. not driven at all

‘W’, -- weakly driven unknown

‘L’, -- weakly driven logic zero

‘H’, -- weakly driven logic one

‘-’); -- don’t care

166

‘-’); -- don’t care

@ETEDUT

Page 165: ChuyenDe Design With FPGAs 2013 JPG Print

LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;PACKAGE memory IS

CONSTANT width : INTEGER := 3;

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:Standard logicStandard logic

CONSTANT width : INTEGER := 3;CONSTANT memsize : INTEGER := 7;TYPE data_out IS ARRAY(0 TO width) OF std_logic;TYPE mem_data IS ARRAY(0 TO memsize) OF data_out;

END memory;

LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;USE WORK.memory.ALL;

167

USE WORK.memory.ALL;ENTITY rom IS

PORT( addr : IN INTEGER;data : OUT data_out;cs : IN std_logic);

END rom;

@ETEDUT

Page 166: ChuyenDe Design With FPGAs 2013 JPG Print

ARCHITECTURE basic OF rom ISCONSTANT z_state : data_out := (‘Z’, ‘Z’, ‘Z’, ‘Z’);CONSTANT x_state : data_out := (‘X’, ‘X’, ‘X’, ‘X’);CONSTANT rom_data : mem_data :=

( ( ‘0’, ‘0’, ‘0’, ‘0’),

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:Standard logicStandard logic

( ( ‘0’, ‘0’, ‘0’, ‘0’),( ( ‘0’, ‘0’, ‘0’, ‘1’),( ( ‘0’, ‘0’, ‘1’, ‘0’),( ( ‘0’, ‘0’, ‘1’, ‘1’),( ( ‘0’, ‘1’, ‘0’, ‘0’),( ( ‘0’, ‘1’, ‘0’, ‘1’),( ( ‘0’, ‘1’, ‘1’, ‘0’),( ( ‘0’, ‘1’, ‘1’, ‘1’) );

BEGIN

168

BEGINASSERT addr <= memsizeREPORT “addr out of range”SEVERITY ERROR;data <= rom_data(addr) AFTER 10 ns WHEN cs = ‘1’ ELSEdata <= z_state AFTER 20 ns WHEN cs = ‘0’ ELSEdata <= x_state AFTER 10 ns;

END basic;@

ETEDUT

Page 167: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:GGán tín hiệuán tín hiệu

• Gán theo vị trí, không gán theo chỉ số của mảng

signal Down: std_logic_vector (3 downto 0);

signal Up: std_logic_vector (0 to 3);

Up <= Down;

Phương án nào sau đây là phương án đúng?

169

Up(0)

Up(1)

Up(2)

Up(3)

Down(3)

Down(2)

Down(1)

Down(0)

OR

Up(0)

Up(1)

Up(2)

Up(3)

Down(0)

Down(1)

Down(2)

Down(3)

Tương ứng theo vị trí

@ETEDUT

Page 168: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:GGán tín hiệuán tín hiệu

• Có thể gán biến cho một phần của mảng

• Chú ý chiều (to hoặc downto) phải giống nhau trong cácphép khai báophép khai báo

signal Bus: std_logic_vector (7 downto 0);

signal A: std_logic_vector (0 to 3);

Câu lệnh nào sau đây đúng?

Bus(0 to 3) <= A; Chiều bus không giống như khai báo

Kích thứơc mảng khác nhau

170

Bus <= A;

Bus(3 downto 0) <= A;

Bus(5 downto 4) <= A(0 to 1);

Kích thứơc mảng khác nhau

OK! Bus(3) is driven by A(0)

OK! Bus(5) is driven by A(0)

@ETEDUT

Page 169: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu: Tín hiệu và các kiểu dữ liệu: GGán tín hiệuán tín hiệu

• Có thể kết hợp hai mảng khác nhau

signal Byte_bus: std_logic_vector(7 downto 0);

signal Nibble_busA, Nibble_busB: std_logic_vector(3 downto 0);signal Nibble_busA, Nibble_busB: std_logic_vector(3 downto 0);

Byte_bus <= Nibble_busA & Nibble_busB;

Byte_bus(7)

Byte_bus(6)

Byte_bus(5)

Byte_bus(4)

Nibble_busA(3)

Nibble_busA(2)

Nibble_busA(1)

Nibble_busA(0)

171

Byte_bus(4)

Byte_bus(3)

Byte_bus(2)

Byte_bus(1)

Byte_bus(0)

Nibble_busB(3)

Nibble_busB(2)

Nibble_busB(1)

Nibble_busB(0)@

ETEDUT

Page 170: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:GGán tín hiệuán tín hiệu

• Not supported by all synthesis tools!!

signal X,Y,Z,T: std_logic_vector(3 downto 0);

signal A,B,C: std_logic;

X <= (A,B,C,C); -- correspondence by position

Y <= (3 => A, 1 downto 0 => C, 2 => B);

172

Z <= (3 => A, 2 => B, others => C);

T <= (others => ‘0’); -- initialization irrespective of width of T

@ETEDUT

Page 171: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:Tham số dùng chung (Generic)Tham số dùng chung (Generic)

•Dùng để truyền tham số từ entity tới các bản copy của nó•Các bản copy có thể có các giá trị tham số khác nhau

entity General_mux is

generic (width : integer);

port ( Input : in std_logic_vector (width - 1 downto 0);

Select : in integer range 0 to width - 1;

Output : out std_logic);

end entity General_mux;

173

@ETEDUT

Page 172: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:Tham số dùng chung (Generic)Tham số dùng chung (Generic)

LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;

ENTITY test ISGENERIC(rise, fall : TIME; load : INTEGER);GENERIC(rise, fall : TIME; load : INTEGER);PORT ( ina, inb, inc, ind : IN std_logic;

out1, out2 : OUT std_logic);END test;

ARCHITECTURE test_arch OF test ISCOMPONENT AND2

GENERIC(rise, fall : TIME; load : INTEGER);PORT ( a, b : IN std_logic;

c : OUT std_logic);

174

c : OUT std_logic);END COMPONENT;

BEGINU1: AND2 GENERIC MAP(10 ns, 12 ns, 3 )

PORT MAP (ina, inb, out1 );U2: AND2 GENERIC MAP(9 ns, 11 ns, 5 )

PORT MAP (inc, ind, out2 );END test_arch;

@ETEDUT

Page 173: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:Tham số dùng chung (Generic)Tham số dùng chung (Generic)

LIBRARY IEEE;USE IEEE.std_logic_1164.ALL;ENTITY test IS

GENERIC(rise, fall : TIME;GENERIC(rise, fall : TIME;GENERIC(load : INTEGER);PORT ( ina, inb, inc, ind : IN std_logic;PORT ( out1, out2 : OUT std_logic);

END test;ARCHITECTURE test_arch OF test ISCOMPONENT and2GENERIC(rise, fall : TIME := 10 NS;

GENERIC(load : INTEGER := 0);PORT ( a, b : IN std_logic;PORT ( c : OUT std_logic);END COMPONENT;

175

END COMPONENT;BEGIN

U1: and2 GENERIC MAP(10 ns, 12 ns, 3 )PORT MAP (ina, inb, out1 );U2: and2 PORT MAP (inc, ind, out2 );END test_arch;

@ETEDUT

Page 174: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:ThuThuộc tính (attributes)ộc tính (attributes)

TYPE state IS (0 TO 7);

4 thuộc tính (attributes) được định nghĩa sẵn

_ T’LEFT, which returns the left bound of a type or subtype_ T’RIGHT, which returns the right bound of a type or subtype_ T’HIGH, which returns the upper bound of a type or subtype_ T’LOW, which returns the lower bound of a type or subtype

176

PROCESS(x)SUBTYPE smallreal IS REAL RANGE -1.0E6 TO 1.0E6;VARIABLE q : real;BEGIN

q := smallreal’LEFT; -- use of ’left returns 1.0E6END PROCESS;

@ETEDUT

Page 175: ChuyenDe Design With FPGAs 2013 JPG Print

Tín hiệu và các kiểu dữ liệu:Tín hiệu và các kiểu dữ liệu:ThuThuộc tính (attributes)ộc tính (attributes)

PROCESS(a)PROCESS(a)TYPE bit4 IS ARRAY(0 TO 3) of BIT;TYPE bit_strange IS ARRAY(10 TO 20) OF BIT;VARIABLE len1, len2 : INTEGER;

BEGINlen1 := bit4’LENGTH; -- returns 4len2 := bit_strange’LENGTH; -- returns 11

END PROCESS;

177

END PROCESS;

Xem “VHDL programming by example” để biết chi tiết hơn về thuộc tính@

ETEDUT

Page 176: ChuyenDe Design With FPGAs 2013 JPG Print

Các phép toán số học và logic:Các phép toán số học và logic:CCác phép toán logicác phép toán logic

• Các phép toán logic gồm: not, and, or, xor, nand, nor

• Thứ tự ưu tiên:�‘not’ được thực hiện đầu tiên

�Các lệnh còn lại có cùng mức ưu tiên

• Các phép toán logic được dùng cho các kiểu dữ liệu sau :bit, bit_vector, boolean, std_logic, std_logic_vector,std_ulogic, std_ulogic_vector

• Các phép toán logic có thể được dùng với mảng:

178

• Các phép toán logic có thể được dùng với mảng:�Các mảng phải có cùng kích thước

�Các phần tử của mảng tương ứng theo vị trí

@ETEDUT

Page 177: ChuyenDe Design With FPGAs 2013 JPG Print

Các phép toán số học và logic:Các phép toán số học và logic:CCác phép toán logicác phép toán logic

library IEEE;

use IEEE.Std_Logic_1164.All;use IEEE.Std_Logic_1164.All;

entity Gate is

port(A,B,C: in std_logic;

Z: out std_logic);

end Gate;

architecture Logical of Gate is

begin

Z <= A and not(B or C);

end Logical;

179

end Logical;

@ETEDUT

Page 178: ChuyenDe Design With FPGAs 2013 JPG Print

Các phép toán số học và logic:Các phép toán số học và logic:CCác phép toán logicác phép toán logic

library IEEE;

use IEEE.Std_Logic_1164.All;

entity Gate is

generic(width : integer range 0 to 31);

port(A,B,C: in std_logic_vector(width-1 downto 0);

Z: out std_logic_vector(width-1 downto 0));

end Gate;

architecture Logical of Gate is

begin

Z <= A and not(B or C);

180

Z <= A and not(B or C);

end Logical;@ETEDUT

Page 179: ChuyenDe Design With FPGAs 2013 JPG Print

Các phép toán số học và logic:Các phép toán số học và logic:CCác phép toán so sánhác phép toán so sánh

• Các phép toán so sánh gồm: <, <=, =>, >, =, /=

• Kết quả của phép so sánh là kiểu boolean

• Hai toán hạng phải có cùng kiểu dữ liêụ

• Phép toán so sánh có thể được dùng cho mảng�Mảng có thể có kích thước khác nhau!

�Các phần tử của mảng sẽ được so sánh từng bit, từ trái sang phải

�Bit vector có thể được so sánh nếu như có cùng độ dài và khi sosánh giá trị của bit vector sẽ được đổi sang số nguyên không dấu

181

sánh giá trị của bit vector sẽ được đổi sang số nguyên không dấuđể so sánh @

ETEDUT

Page 180: ChuyenDe Design With FPGAs 2013 JPG Print

CCác phép toán so sánhác phép toán so sánhlibrary IEEEuse IEEE.Std_Logic_1164.All;

entity Compare isport( A: in std_logic_vector(3 downto 0);

B: in std_logic_vector(0 to 4);Z: out boolean);

What is the

value of Z?

TRUE?

FALSE?Z: out boolean);

end Compare;

architecture Relational of Compare isbegin

Z <= TRUE when A<B else FALSE;end Relational;

entity Testbenchend entity Testbench;

FALSE?

1110

is compared to

1011

by bit position

from left to

right;

in the 2nd

182

architecture Build1 of Testbench issignal A: std_logic_vector(3 downto 0) := “1110”;signal B: std_logic_vector(0 to 4) := “10111”;signal Z: boolean;begin

DUT: entity Compare(Relational)port map (A => A, B => B, Z => Z);

end Build1;

in the 2nd

position

A(2) > B(1)

hence (A<B)

is FALSE

@ETEDUT

Page 181: ChuyenDe Design With FPGAs 2013 JPG Print

Các phép toán số học và logic:Các phép toán số học và logic:CCác phép toán số họcác phép toán số học

• Các phép toán số học gồm: +, -, *, /, ** (exponential), abs(absolute value), mod (modulus), rem (remainder)

• Các phép toán này dùng cho kiểu số nguyên và số thực• Các phép toán này dùng cho kiểu số nguyên và số thực(trừ mod and rem không dùng cho số thực), không dùngcho kiểu bit vector

• Cả hai toán hạng phải có cùng kiểu dữ liệu và có thể códải giá trị khác nhau

• Một biến kiểu vật lý (ví dụ: time) có thể nhân với một số

183

• Một biến kiểu vật lý (ví dụ: time) có thể nhân với một sốnguyên và một số thực, kết quả sẽ vẫn là kiểu vật lý@

ETEDUT

Page 182: ChuyenDe Design With FPGAs 2013 JPG Print

Các phép toán số học và logic:Các phép toán số học và logic:CCác phép toán số họcác phép toán số học

entity Add is

port ( A,B: in integer range 0 to 7;

Z: out integer range 0 to 14);

end Add;

architecture Behav of Add is

begin

Z <= A + B;

end Behav;

184

@ETEDUT

Page 183: ChuyenDe Design With FPGAs 2013 JPG Print

Các lệnh song song và tuần tự :Các lệnh song song và tuần tự :CCác lệnh song songác lệnh song song

• Tất cả các lệnh trong architecture đều được thực hiện đồngthời (song song) giống như trong phần cứng, các cổnglogic hoạt động đồng thờilogic hoạt động đồng thời

entity Concurrent is

port ( A,B,C,D: in std_logic;

Y,Z: out std_logic);

end Concurrent;

architecture Struct of Concurrent is

begin

A

BY

Schematic:

185

begin

GATE1: entity NAND2 port map (A,B,Y);

GATE2: entity NAND2 port map (C,D,Z);

end Struct;

B

C

DZ

Mạch sẽ hoạt động thế nào nếu như khai báo GATE1 sau GATE2?@

ETEDUT

Page 184: ChuyenDe Design With FPGAs 2013 JPG Print

Các lệnh song song và tuần tự :Các lệnh song song và tuần tự :CCác lệnh song songác lệnh song song

entity Concurrent is

port ( A,B,C,D: in std_logic;

Y,Z: out std_logic);

end Concurrent;

architecture Struct of Concurrent is

begin

A

BY

Schematic:

186

begin

GATE2: entity NAND2 port map (C,D,Z);

GATE1: entity NAND2 port map (A,B,Y);

end Struct;

B

C

DZ

Mạch vẫn hoạt động như cũ!!!@

ETEDUT

Page 185: ChuyenDe Design With FPGAs 2013 JPG Print

Các lệnh song song và tuần tự :Các lệnh song song và tuần tự :CCác lệnh song songác lệnh song song

A

Schematic:

A

B

DZ

T1entity Concurrent is

port ( A,B, D: in std_logic;

Z: out std_logic);

end Concurrent;

architecture Struct of Concurrent is

signal T1: std_logic;

begin

GATE2: entity NAND2 port map (T1,D,Z);

187

GATE2: entity NAND2 port map (T1,D,Z);

GATE1: entity NAND2 port map (A,B,T1);

end Struct; @ETEDUT

Page 186: ChuyenDe Design With FPGAs 2013 JPG Print

Các lệnh song song và tuần tự : Các lệnh song song và tuần tự : ProcessProcess

• Nhiều khi phương trình tổ hợp trong một câu lệnh rất phứctạp, ví dụ:

A

entity Complex is

port(A,B,C,D,E,F,G,H,I,J,S:

in std_logic;

Y,Z: out std_logic);

end Complex;

architecture Struct of Complex is

begin

Y <= ((A nand B) nand (C nand D))

A

B

C

D

E

F

G

H

S

Y

I Z

188

Y <= ((A nand B) nand (C nand D))

when (S = ‘1’) else

((E nand F) nand (G nand H));

Z <= I nand J;

end Struct;

I

J

Z@ETEDUT

Page 187: ChuyenDe Design With FPGAs 2013 JPG Print

Các lệnh song song và tuần tự : Các lệnh song song và tuần tự : ProcessProcess

• Vì vậy người ta đưa ra khái niệm process:�Một process hoạt động như một câu lệnh và được thực hiện đồng

thời với các câu lệnh khácthời với các câu lệnh khác

� Bên trong một process, các lệnh được thực hiện tuần tự theo thứtự từ trên xuống dưới. Điều này giúp cho việc chia nhỏ một lệnhrất phức tạp thành các lệnh đơn giản hơn.

� Để truyền dữ liệu giữa các lệnh trong một process chúng ta cóthể dùng các biến tạm thời variables. Các biến này không nhấtthiết phải là một tín hiệu vật lý nào.

189

thiết phải là một tín hiệu vật lý nào.

� process sẽ được thực hiện lại mỗi khi có một sự kiện (event) xảyra đối với một tín hiệu (signal) nào đó trong danh sách tín hiệunhạy cảm (sensitivity list).

@ETEDUT

Page 188: ChuyenDe Design With FPGAs 2013 JPG Print

Các lệnh song song và tuần tự : Các lệnh song song và tuần tự : ProcessProcess

Cú pháp khai báo Process:

Process_name: process (sensitivity_list) is

-- variable declarations;

begin

-- variable declarations;

begin

-- sequential commands

end process;

Cú pháp khai báo biến:

variable Variable_name: type;

190

Cú pháp gán giá cho một biến:

Variable_name := expression;

Gán biến → :=Gán tín hiệu → <=

@ETEDUT

Page 189: ChuyenDe Design With FPGAs 2013 JPG Print

Các lệnh song song và tuần tự : Các lệnh song song và tuần tự : ProcessProcess

entity Complex is

port(A,B,C,D,E,F,G,H,I,J,S:

in std_logic;

Y,Z: out std_logic);

end Complex;

T1 and T2 have no

physical meaning since

each refers to 2 different

physical wiresend Complex;

architecture Struct of Complex is

begin

Y_process: process (A,B,C,D,E,F,G,H,S) is

variable T1,T2: std_logic;

begin

if (S=‘1’) then

T1 := A nand B;

T2 := C nand D;

else

A

B

C

physical wires

T1 T2Sensitivity list

191

T2 := C nand D;

else

T1 := E nand F;

T2 := G nand H;

end if;

Y <= T1 nand T2;

end process;

Z <= I nand J;

end Struct;

C

D

E

F

G

H

S

Y

I

J

Z@

ETEDUT

Page 190: ChuyenDe Design With FPGAs 2013 JPG Print

ProcessProcess

• Xét ví dụ sau:

Example: process (A,B,M) is

beginbegin

Y <= A;

M <= B;

Z <= M;

end process;

1. Giả thiết B có giá trị mới B’

2. Process Example được thực hiện. Các tín hiệu ra được ghi nhớ:Y’ <= A; M’ <= B’; Z’ <= M;

Giá trị M cũ !!! M chỉ nhận giá trị mới ở cuối process

192

3. Process Example tạm dừngY, M và Z nhận các giá trị mới Y’, M’, Z’.

4. Vì M ở trong sensitivity list, process Example lại đựơc thực hiện

5. Process Example thực hiện: Y” <= A; M” <= B’; Z” <= M’;

6. Y, M and Z nhận giá trị mới Y”, M”, Z”.

7. Không có tín hiệu nào trong sensitivity list thay đổi, process dừng

@ETEDUT

Page 191: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tự

• Các cấu trúc tuần tự chỉ được sử dụng trong process vàchương trình con!!!

• Các cấu trúc tuần tự bao gồm: IF, CASE, FOR, NEXT,• Các cấu trúc tuần tự bao gồm: IF, CASE, FOR, NEXT,EXIT, WAIT, ASSERT

IF statement:

if condition then

-- sequential statements

multiple IF statements:

if condition1 then

-- sequential statements

193

-- sequential statements

else

-- sequential statements

end if;

-- sequential statements

elsif condition2 then

-- sequential statements

elsif condition3 then

-- sequential statements

else

-- sequential statements

end if;@

ETEDUT

Page 192: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tựcase Expression is

when Value_1 =>

-- sequential statements

when Value_2 =>

-- sequential statements-- sequential statements

-- etc.

end case;

Example: process (A,B,C,X) is

begin

case X is

when 0 to 4 =>

Z <= B;

Yêu cầu:

1. Tất cả các trường hợpphải đựơc xác định2. Giá trị value phải là hằng sốvà phải biết khi thiết kế

194

Z <= B;

when 5 =>

Z <= C;

when 7 | 9 =>

Z <= A;

when others =>

Z <= ‘0’;

end process;

3. Giá trị phải có cùng kiểu với expression@

ETEDUT

Page 193: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tự

TYPE vectype IS ARRAY(0 TO 1) OF BIT;VARIABLE bit_vec : vectype;

CASE bit_vec ISWHEN “00” =>

RETURN 0;WHEN “01” =>

RETURN 1;

195

RETURN 1;WHEN “10” =>

RETURN 2;WHEN “11” =>

RETURN 3;END CASE;

@ETEDUT

Page 194: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tự

for I in 0 to 3 loop

-- sequential statements

end loop;

1. Không được khai báo biến dùng trong vòng for và khôngđược gán giá trị cho biến đó

Chú ý:

FOR i IN 1 to 10 LOOPi_squared(i) := i * i;

196

i_squared(i) := i * i;END LOOP;@

ETEDUT

Page 195: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tự

entity General_mux is

generic (width : integer);

port ( Input : in std_logic_vector (width - 1 downto 0);

Select : in integer range 0 to width - 1;Select : in integer range 0 to width - 1;

Output : out std_logic);

end General_mux;

architecture Behav of General_mux is

begin

Selector: process (Input, Select) is

begin

for I in 0 to width-1 loop

if Select=I then

Output <= Input(I);

197

if Select=I then

Output <= Input(I);

end if;

end loop;

end process;

end Behav;

@ETEDUT

Page 196: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tựPROCESS(A, B)

CONSTANT max_limit : INTEGER := 255;BEGIN

FOR i IN 0 TO max_limit LOOPFOR i IN 0 TO max_limit LOOPIF (done(i) = TRUE) THEN

NEXT;ELSE

done(i) := TRUE;END IF;q(i) <= a(i) AND b(i);

198

q(i) <= a(i) AND b(i);END LOOP;

END PROCESS;

Cấu trúc NEXT được dùng để bỏ qua vòng lặp hiện tại để nhảy tớivòng lặp tiếp theo

@ETEDUT

Page 197: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tựPROCESS(a)

variable int_a : integer;BEGIN

int_a := a;int_a := a;FOR i IN 0 TO max_limit LOOP

IF (int_a <= 0) THEN -- less than orEXIT; -- equal to

ELSEint_a := int_a -1;q(i) <= 3.1416 / REAL(int_a * i); -- signal

END IF; -- assignEND LOOP;

199

Cấu trúc EXIT được dùng để thoát ra khỏi vòng lặp for

END LOOP;y <= q;

END PROCESS;@ETEDUT

Page 198: ChuyenDe Design With FPGAs 2013 JPG Print

Các cCác cấu trúc tuần tựấu trúc tuần tự

PROCESSBEGIN

WAIT UNTIL clock = ‘1’ AND clock’EVENT;q <= d;q <= d;

END PROCESS;

PROCESSBEGIN

WAIT ON a; -- 1..WAIT ON b; -- 2.

200

WAIT ON b; -- 2..

END PROCESS;

WAIT FOR 10 ns;WAIT FOR ( a * ( b + c ));

@ETEDUT

Page 199: ChuyenDe Design With FPGAs 2013 JPG Print

Biến (Variables)Biến (Variables)

• Variable chỉ được sử dụng trong process hoặc chươngtrình con

• Giá trị của variable được cập nhật ngay lập tức trong khi• Giá trị của variable được cập nhật ngay lập tức trong khigiá trị của tín hiệu signal sẽ được cập nhật khi process kếtthúc

• Biến và tín hiệu có thể đựơc gán giá trị cho nhau

• Biến chỉ được dùng tạm thời trong process, nếu giá trị củanó muốn được truy cập ngoài process ta phải gán giá trị đó

201

nó muốn được truy cập ngoài process ta phải gán giá trị đócho một tín hiệu @

ETEDUT

Page 200: ChuyenDe Design With FPGAs 2013 JPG Print

Biến (Variables)Biến (Variables)• LIBRARY IEEE;• USE IEEE.std_logic_1164ALL;

• ENTITY mux IS• PORT (I0, I1, I2, I3, A, B : IN std_logic;

Q : OUT std_logic);

Tìm chỗ sai trong đoạn mã !Q : OUT std_logic);

• END mux;

• ARCHITECTURE mux_behave OF mux IS• SIGNAL sel : INTEGER RANGE 0 TO 3;• BEGIN• B : PROCESS(A, B, I0, I1, I2, I3)• BEGIN• sel <= 0;• IF (A = ‘1’) THEN sel <= sel + 1; END IF;• IF (B = ‘1’) THEN sel <= sel + 2; END IF;• CASE sel IS

202

• WHEN 0 =>• Q <= I0;• WHEN 1 =>• Q <= I1;• WHEN 2 =>• Q <= I2;• WHEN 3 =>• Q <= I3;• END CASE;• END PROCESS;• END mux_behave;

@ETEDUT

Page 201: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn sườn lên của xung nhịpBiểu diễn sườn lên của xung nhịp

Tìm chức năng của entity What

entity What is

port (D,Clk: in std_logic;

Q: out std_logic);Q: out std_logic);

end What;

architecture RTL of What is

begin

process (D, Clk) is

begin

if (Clk=‘1’) then

Q <= D;

end if;

end process;

Since there is no ELSE part

the previous Q value has

to be remembered for the case

where Clk=‘0’.

The synthesis tool will hence

infer a latch instead of just

combinatorial logic!!!

Beware of unintended latches

when ELSE parts are omitted

203

end process;

end RTL;With a latch, not with a D-flip-flop!!

When a Clk-event occurs and Clk is low, nothing happens

When a Clk-event occurs and Clk is high, the D input is copied

to the Q output

When a D-event occurs and Clk is high, the D input is copied to

the Q output => hence a latch: when Clk is high, Q follows D

Beware of unintended latches

when ELSE parts are omitted@ETEDUT

Page 202: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn sườn lên của xung nhịpBiểu diễn sườn lên của xung nhịp

Cách 1: WAIT UNTIL

entity DFlipFlop isentity DFlipFlop is

port (D,Clk: in std_logic;

Q: out std_logic);

end DFlipFlop;

architecture RTL of DFlipFlop is

begin

process is

begin

wait until Clk’event and Clk=‘1’; --- suon len

Q <= D;

This is not synthesisable

204

wait until Clk’event and Clk=‘1’; --- suon len

Q <= D;

end process;

end RTL; @ETEDUT

Page 203: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn sườn lên của xung nhịpBiểu diễn sườn lên của xung nhịp

Cách 2: Sensitivity list

entity DFlipFlop is

port (D,Clk: in std_logic;port (D,Clk: in std_logic;

Q: out std_logic);

end entity DFlipFlop;

architecture RTL of DFlipFlop is

begin

process (D,Clk) is

begin

if (Clk’event and Clk=‘1’) then

Q <= D;

end if;

205

Q <= D;

end if;

end process;

end architecture RTL;@ETEDUT

Page 204: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn Finite State MachineBiểu diễn Finite State Machine

Wait

Start=0

- Start : Count Enable

- Up : Count DirectionWait

00

Up1

01

Up2

Down3

11

Down2

Start=1

Up=0

Start=1

Up=1Out

put

logic

State

Reg

ResetOutput

CurrentState

206

Up2

10

Up3

11

Down2

10

Down1

01

UpStart

Next

state

logic

NextState

Clk

@ETEDUT

Page 205: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn Finite State MachineBiểu diễn Finite State Machine

Wait

00

Start=0

Start=1Start=1

entity FSM isport ( Start, Up, Reset, Clk: in std_logic;

Output: out std_logic_vector(0 to 1));end FSM;

architecture Behav of FSM is00

Up1

01

Up2

10

Down3

11

Down2

10

Start=1

Up=0

Start=1

Up=1architecture Behav of FSM istype FSM_States is (Wait,Up1,Up2,Up3,Down1,Down2,Down3);signal CurrentState, NextState : FSM_States;

beginOutputLogic:process(CurrentState) isend process;

NextStateLogic:process(CurrentState,Start,Up) is

207

10

Up3

11

10

Down1

01

process(CurrentState,Start,Up) is…

end process;

StateRegister:process(NextState,Clk,Reset) is

…end process;

end Behav;@

ETEDUT

Page 206: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn Finite State MachineBiểu diễn Finite State Machine

Wait

00

Start=0

Start=1Start=1OutputLogic:00

Up1

01

Up2

10

Down3

11

Down2

10

Start=1

Up=0

Start=1

Up=1OutputLogic:

process(CurrentState) is

begin

case CurrentState is

when Wait =>

Output <= “00”;

when Up1|Down1 =>

Output <= “01”;

when Up2|Down2 =>

Output <= “10”;

208

10

Up3

11

10

Down1

01

Output <= “10”;

when Up3|Down3 =>

Output <= “11”;

end case;

end process;

@ETEDUT

Page 207: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn Finite State MachineBiểu diễn Finite State Machine

Wait

00

Start=0

Start=1Start=1

NextStateLogic:

process(CurrentState,Start,Up) is

begin

case CurrentState is

when Wait =>

if (Start=‘0’) then00

Up1

01

Up2

10

Down3

11

Down2

10

Start=1

Up=0

Start=1

Up=1if (Start=‘0’) then

NextState <= Wait;

elsif (Up=‘1’) then

NextState <= Up1;

else

NextState <= Down3;

end if;

when Up1 =>

NextState <= Up2;

when Up2 =>

209

10

Up3

11

10

Down1

01

when Up2 =>

NextState <= Up3;

when Up3|Down1 =>

NextState <= Wait;

when Down3 =>

NextState <= Down2;

when Down2 =>

NextState <= Down1;

end case;

end process;

@ETEDUT

Page 208: ChuyenDe Design With FPGAs 2013 JPG Print

Biểu diễn Finite State MachineBiểu diễn Finite State Machine

Wait

00

Start=0

Start=1Start=1 00

Up1

01

Up2

10

Down3

11

Down2

10

Start=1

Up=0

Start=1

Up=1

StateRegister:

process(NextState,Clk,Reset) is

begin

if Reset=‘1’ then

CurrentState <= Wait;

elsif (Clk’event and Clk=‘1’) then

CurrentState <= NextState;

end if;

210

10

Up3

11

10

Down1

01

end if;

end process;@ETEDUT

Page 209: ChuyenDe Design With FPGAs 2013 JPG Print

Chương trình conChương trình con

• Gồm 2 loại: thủ tục (procedure) và hàm (function)

• Thủ tục: có thể trả về nhiều giá trị, có thể có các biến số làcác tín hiệu vào, ra hoặc vào\racác tín hiệu vào, ra hoặc vào\ra

• Hàm: chỉ trả về một giá trị và tất cả các biến số chỉ có thểlà tín hiệu vào

• Thủ tục và hàm có 2 loại: song song và tuần tự. Thủ tụchoặc hàm song song được đặt ngoài process và thủ tụchoặc hàm tuần tự chỉ được đặt trong process

211

hoặc hàm tuần tự chỉ được đặt trong process

• Các lệnh trong chương trình con được thực hiện tuần tựgiống như process

@ETEDUT

Page 210: ChuyenDe Design With FPGAs 2013 JPG Print

Chương trình conChương trình con

• ENTITY convert IS• PORT(I1 : IN log8; --line 2

O1 : OUT INTEGER); --line 3• END convert;• END convert;• ARCHITECTURE behave OF convert IS• FUNCTION vector_to_int(S : log8) --line 4• RETURN INTEGER is --line 5• VARIABLE result : INTEGER := 0; --line 6• BEGIN• FOR i IN 0 TO 7 LOOP --line 7• result := result * 2; --line 8• IF S(i) = ‘1’ THEN --line 9

212

• IF S(i) = ‘1’ THEN --line 9• result := result + 1; --line 10• END IF;• END LOOP;• RETURN result; --line 11• END vector_to_int;• BEGIN• O1 <= vector_to_int(I1); --line 12• END behave;

@ETEDUT

Page 211: ChuyenDe Design With FPGAs 2013 JPG Print

Chương trình conChương trình con

Ví dụ khai báo thủ tục:

procedure increment_reg (variable reg : inout word_32; constantprocedure increment_reg (variable reg : inout word_32; constantincr : in integer := 1);

Ví dụ gọi thủ tục:

increment_reg(index_reg, offset–2); -- add value to index_reg

213

increment_reg(index_reg, offset–2); -- add value to index_reg

increment_reg(prog_counter); -- add 1 (default) to prog_counter@ETEDUT

Page 212: ChuyenDe Design With FPGAs 2013 JPG Print

CácCác họhọ FPGA/CPLD FPGA/CPLD củacủa XilinxXilinx

@ETEDUT

Page 213: ChuyenDe Design With FPGAs 2013 JPG Print

Các họ CPLD/FPGA của XilinxCác họ CPLD/FPGA của Xilinx

215

@ETEDUT

Page 214: ChuyenDe Design With FPGAs 2013 JPG Print

Các họ CPLD/FPGA của XilinxCác họ CPLD/FPGA của Xilinx

216

@ETEDUT

Page 215: ChuyenDe Design With FPGAs 2013 JPG Print

A Decade of ProgressA Decade of Progress

• 200x More Logic

�Plus memory,

1000x

Virtex-4XC4000 &

�Plus memory,

µP etc.

• 40x Faster

• 50x Lower Power

• 500x Lower Cost

CLB Capacity

Speed

Power per MHz

Price

Virtex &

Virtex-E

100x

10x

Virtex-II &

Virtex-II Pro

Virtex-4XC4000 &

Spartan

217

XC4000

1x

Spartan-2

Spartan-3

'91 '92 '93 '94 '95 '96 '97 '98 '99 '00 '01 '02 '03 '04

Year

Courtesy: Richard Sevcik, Xilinx

@ETEDUT

Page 216: ChuyenDe Design With FPGAs 2013 JPG Print

Các họ CPLD/FPGA của XilinxCác họ CPLD/FPGA của Xilinx

• Họ Virtex:�Virtex-4:

�2004, 1.2 V, 90nm�2004, 1.2 V, 90nm

� 500 MHz, low power

�200.000 logic cells, DSP, PowerPC

�Thay thế ASIC, ASSP

�Virtex-II Pro /X�2002, 1.5 V, 130nm

�400 MHz

218

�400 MHz

�3K to 99K logic cells + DSP, PowerPC@ETEDUT

Page 217: ChuyenDe Design With FPGAs 2013 JPG Print

Các họ CPLD/FPGA của XilinxCác họ CPLD/FPGA của Xilinx

• Họ Virtex:�Virtex-II

�2001, 1.5 V, 150nm�2001, 1.5 V, 150nm

�300 MHz

�3K to 99K logic cells

�Virtex /E�1998/1999, 2.5 /1.8 V, 220 / 180 nm

�150/ 200 MHz

�3K to 70K logic cells

219

�3K to 70K logic cells@ETEDUT

Page 218: ChuyenDe Design With FPGAs 2013 JPG Print

Các họ CPLD/FPGA của XilinxCác họ CPLD/FPGA của Xilinx

• Họ Spartan:�Spartan-3/E /L

�2003, 1.5 V, 90nm�2003, 1.5 V, 90nm

�300 MHz

�5M gates

220

@ETEDUT

Page 219: ChuyenDe Design With FPGAs 2013 JPG Print

Các họ CPLD/FPGA của XilinxCác họ CPLD/FPGA của Xilinx

• CPLD- Họ Coolrunner�CoolRunner-II

�1.8V, 180 nm�1.8V, 180 nm

�303 MHz

�32-512 macrocells

�Ultra Low power

�CoolRunner-XPLA3�3.3 V

�200 MHz

221

�200 MHz

�32-512 macrocells

�Low power @ETEDUT

Page 220: ChuyenDe Design With FPGAs 2013 JPG Print

Các họ CPLD/FPGA của XilinxCác họ CPLD/FPGA của Xilinx

• CPLD- Họ XC9500�XC9500XV

�2.5 V�2.5 V

�250 MHz

�36-288 macrocells

�Low cost

�XC9500XL�3.3 V

�200 MHz

222

�200 MHz

�36-288 macrocells

�Low cost

�XC9500�5 V, 200 MHz

�36-288 macrocells

�Low cost

@ETEDUT

Page 221: ChuyenDe Design With FPGAs 2013 JPG Print

FPGA Design FlowFPGA Design Flow

@ETEDUT

Page 222: ChuyenDe Design With FPGAs 2013 JPG Print

CPLD/FPGA design flowCPLD/FPGA design flow

• Design Flow

224

@ETEDUT

Page 223: ChuyenDe Design With FPGAs 2013 JPG Print

Design EntryDesign Entry

• Using schematic editor:�Works well with small designs: 5k to 10 k gates

�Schematic can be compiled to HDL�Schematic can be compiled to HDL

• Using HDL (Hardware Description Language)�VHDL, Verilog

�Others: Abel

�Works with large design: > 100 k gates

• Using State Editor:

225

• Using State Editor:�Mostly for controller

�FSM can be compiled to HDL

• Higher level design language�System C: C based

�Ocapi-xl: C and C++ based@

ETEDUT

Page 224: ChuyenDe Design With FPGAs 2013 JPG Print

Design EntryDesign Entry

• Design tools:�Webpack ISE (miễn phí)

�Thiết kế cho CPLD, FPGA�Thiết kế cho CPLD, FPGA

�Có công cụ thiết kế dùng schematic, ngôn ngữ mô tả phần cứng, côngcụ tổng hợp, mô phỏng và vật lý

�http://www.xilinx.com/ise/logic_design_prod/webpack.htm

�ISE Foundation™ (không miễn phí)�chức năng tương tự như Webpack

�EDK and Platform studio

226

�EDK and Platform studio�Dùng để thiết kế hệ thống nhúng với FPGA@

ETEDUT

Page 225: ChuyenDe Design With FPGAs 2013 JPG Print

Schematic diagram: exampleSchematic diagram: example

227

Language based

refinement:

VHDL editor@

ETEDUT

Page 226: ChuyenDe Design With FPGAs 2013 JPG Print

VHDL: ExampleVHDL: Example

228

@ETEDUT

Page 227: ChuyenDe Design With FPGAs 2013 JPG Print

Design SynthesisDesign Synthesis

• Synthesis process:�Check code syntax�Analyze the hierarchy of the design�Analyze the hierarchy of the design�Compile RTL to gate level�Create netlist of the design�Take into account the architecture of the target FPGA

• Synthesis tools:�XST (Xilinx synthesis technology)

229

�Generate a NGC file

�LeonardoSpectrum from Mentor Graphics, Inc�Synplify and Synplify Pro from Synplicity Inc.

@ETEDUT

Page 228: ChuyenDe Design With FPGAs 2013 JPG Print

Design ImplementationDesign Implementation

• Translate:�Translate the design netlist and constraints into (Xilinx) primitives

� Input: NGC file, Output: NGD file (Native Generic Database)� Input: NGC file, Output: NGD file (Native Generic Database)

• Map:�Map the primitives to the actual physic circuit of the device

� Input: NGD file, Output: NCD file ( Native Circuit Description)

• Place and Route (PAR):�Place the circuits on the CLB and find a good route to connect them

230

�Place the circuits on the CLB and find a good route to connect them

� Input: NCD file, Output: NCD file@ETEDUT

Page 229: ChuyenDe Design With FPGAs 2013 JPG Print

Xilinx device programmingXilinx device programming

• Create a bitstream to program the device

• Input: NCD file, Output: bit file

• Programming tools:�Download software + download cable

231

@ETEDUT

Page 230: ChuyenDe Design With FPGAs 2013 JPG Print

Design verificationDesign verification

• Mô phỏng chức năng với behavioral simulation

• Mô phỏng về thời gian với timing simulation

• Kiểm tra phần cứng

• Verification tools:�ModelSim

�ChipScope Pro

�ISE Simulator

232

@ETEDUT

Page 231: ChuyenDe Design With FPGAs 2013 JPG Print

BàiBài tậptập

@ETEDUT

Page 232: ChuyenDe Design With FPGAs 2013 JPG Print

Bài tập 1: Thiết kế các mạch số cơ bảnBài tập 1: Thiết kế các mạch số cơ bản

Thiết kế các mạch tổ hợp sau đây bằng ngôn ngữ mô tả phần cứng VHDL

a) Mạch MUX 8 sang 1

b) Mạch MUX 8 sang 1 với các đường dữ liệu vào có độ rộng là 8 bítb) Mạch MUX 8 sang 1 với các đường dữ liệu vào có độ rộng là 8 bít

c) Mạch DEMUX 1 sang 8

d) Mạch DEMUX 1 sang 8 với các đường dữ liệu ra có độ rộng là 8 bít

e) Mạch mã hóa có ưu tiên từ 8 sang 3, với mức tích cực ngõ vào là logic thấp, ngõvào x0 có mức ưu tiên cao nhất, ngõ vào x7 có mức ưu tiên thấp nhất (tương tựchức năng của vi mạch 74LS148).

f) Mạch giải mã từ 3 sang 8, mức tích cực ngõ ra là logic thấp, và có một đường tínhiệu vào EN cho phép mạch hoạt động với EN tích cực mức cao (tương tự chứchiệu vào EN cho phép mạch hoạt động với EN tích cực mức cao (tương tự chứcnăng vi mạch 74LS138).

g) Mạch giải mã LED 7 đoạn cho LED loại Anode chung (vi mạch 7447)

h) Mạch giải mã LED 7 đoạn cho LED loại Kathode chung (vi mạch 4511)

i) Mạch cộng/trừ 2 số nhị phân 4 bít

234

@ETEDUT

Page 233: ChuyenDe Design With FPGAs 2013 JPG Print

Bài tập Bài tập 22: Thiết kế FF: Thiết kế FF

Thực hiện các Flip Flop đã học (D, T, RS, JK) bằng VHDLtrong các trường hợp

� Xung Clk tác động sườn lên� Xung Clk tác động sườn lên

� Xung Clk tác động sườn xuống

� FF có thêm các ngõ vào Preset (Pr) và Clear (Clr)

235

@ETEDUT

Page 234: ChuyenDe Design With FPGAs 2013 JPG Print

Bài tập 3 (FSM)Bài tập 3 (FSM)

• Thiết kế mạch có một đầu vào X, một đầu ra Z thực hiện việcphát hiện một chuỗi bít vào:

�Nếu chuỗi bít vào là 1001 hoặc 101 thì ngõ ra Z = 1�Nếu chuỗi bít vào là 1001 hoặc 101 thì ngõ ra Z = 1

�Ngược lại ngõ ra Z = 0

• Ví dụ�X = 111001010000100101011100010100

�Z = 000001010000000101010000000100

• Yêu cầu: Vẽ giản đồ trạng thái của FSM loại Moore

236

• Yêu cầu: Vẽ giản đồ trạng thái của FSM loại Moore

X Z

Clock@

ETEDUT

Page 235: ChuyenDe Design With FPGAs 2013 JPG Print

Bài tập 4 (FSM)Bài tập 4 (FSM)

• Thiết kế mạch điều khiển đèn giao thông theo yêu cầu sauđây:�Thời gian đèn đỏ: 25 s = t + t�Thời gian đèn đỏ: 25 s = txanh + tvàng

�Thời gian đèn vàng: tvàng = 5 s

�Thời gian đèn xanh: txanh = 20 s

237

@ETEDUT

Page 236: ChuyenDe Design With FPGAs 2013 JPG Print

Bài tập Bài tập 5 5 (FSM)(FSM)

A. Sử dụng VHDL Thiết kế mạch đếm đồng bộ đếm 10 (đếm từ0 đến 9) cho phép đếm lên/xuống với các tín hiệu vào ra được môtả như sau:tả như sau:� Clk: xung Clock tác động theo sườn lên, mỗi khi có một sườn lên của xung clock

mạch sẽ đếm lên hay xuống tùy thuộc vào tín hiệu DIR.

� RESET: tín hiệu xóa bộ đếm về 0, tích cực mức 1

� DIR: tín hiệu điều khiển chiều đếm, DIR = 0: đếm lên, DIR = 1: đếm xuống

� Q : tín hiệu ra, lưu giữ giá trị đếm (std_logic_vector (3 downto 0))

� CARRY: tín hiệu ra báo cho biết bộ đếm tràn khi đếm lên, CARRY = 1 khi bộđếm đang đếm lên và giá trị bộ đếm chuyển từ 9 sang 0, ngược lại CARRY = 0.

� BORROW: tín hiệu ra báo cho biết bộ đếm tràn khi đếm xuống, BORROW = 1khi bộ đếm đang đếm xuống và giá trị bộ đếm chuyển từ 0 sang 9, ngược lạiBORROW = 0.

B. Thiết kế bộ đếm 100 (đếm từ 0 đến 99) trên cơ sở ghép nốitiếp 2 bộ đếm 10 đã thực hiện ở phần A.

238

@ETEDUT

Page 237: ChuyenDe Design With FPGAs 2013 JPG Print

Bài tập 6 (FSM)Bài tập 6 (FSM)

Thiết kế mạch điều khiển dây chuyền đếm và đóng gói sảnphẩm:

� Mỗi khi có một sản phẩm đi qua cảm biến hồng ngoại sẽ cho tín hiệu cảm biến� Mỗi khi có một sản phẩm đi qua cảm biến hồng ngoại sẽ cho tín hiệu cảm biếnX = 0 và bộ đếm đếm lên 1 đơn vị.

� Khi bộ đếm đếm đủ 5 sản phẩm sẽ xuất tín hiệu ra Z = 1 để điều khiển mạchđóng gói sản phẩm, đồng thời sẽ dừng đếm để đợi tín hiệu PACKED = 1 từmạch điều khiển đóng gói báo đã đóng gói xong.

� Khi PACKED = 1 (đóng gói xong) mạch đếm bị xóa về 0, lúc này tín hiệuPACKED bị xóa và dây chuyền tiếp tục hoạt động đếm sản phẩm như cũ.

� Hiển thị số lượng sản phẩm đếm S (từ 0 đến 5) trên một LED 7 đoạn loại� Hiển thị số lượng sản phẩm đếm S (từ 0 đến 5) trên một LED 7 đoạn loạiAnode chung.

Yêu cầu: Vẽ sơ đồ khối, giản đồ FSM, sau đó thiết kế bằng VHDL và viếttestbench để mô phỏng/kiểm tra với ModelSIM hoặc ISIM.

-- The End --239

@ETEDUT