333
Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN www.dce.hust.edu.vn Msc. Nguyễn Đức Tiến [email protected] +84-91-313-7399 IC

ThietkeIC_Baigiang.v1.2

Embed Size (px)

Citation preview

Page 1: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Msc. Nguyễn Đức Tiến

[email protected]

+84-91-313-7399

IC

Page 2: ThietkeIC_Baigiang.v1.2

Nắm bắt được kiến thức cơ bản và ứng dụng của các IC lập trình mô tả phần cứng được.

Nắm bắt được các nguyên lý lập trình mô tả phần cứng và các cấu trúc lập trình cơ bản, minh họa bằng ngôn ngữ VHDL..

Có kiến thức và kỹ năng thiết kế mạch số

Hiểu biết về nguyên lý hoạt động phần cứng của bộ vi điều khiển và có khả năng thiết kế bộ vi điều khiển.

2 http://dce.hust.edu.vn

Page 3: ThietkeIC_Baigiang.v1.2

3 http://dce.hust.edu.vn

Page 4: ThietkeIC_Baigiang.v1.2

1/2

Cứng hóa các ứng dụng mềm, tạo sản phầm ưu việt về tốc độ.

Hiểu rõ nguyên tắc hoạt động của bộ xử lý, làm căn bản giúp việc lập trình phần mềm, lập trình hệ thống trở nên hợp lý, logic hơn.

4 http://dce.hust.edu.vn

>>

NVIDIA Tegra INTEL Core i7

Đồ họa(Tính toán vector)

Page 5: ThietkeIC_Baigiang.v1.2

2/2

Dễ dàng thiết kế các bo mạch xử lý số.

Nhanh chóng tạo ra các bộ xử lý mới, mạch số chuyên dụng dựa trên mã nguồn mở và tùy biến theo nhu cầu.

Khuynh hướng tạo ra các giải pháp tổng thể hardware/soft ware (Oracle & Sun, Google& Motorola Mobility), và các khối xử lý tăng tốc.

5 http://dce.hust.edu.vn

QuadPort H/I

HDMI2SDI

Card tăng tốc chuyên dụng

Chipset

chuyên

dụng

Page 6: ThietkeIC_Baigiang.v1.2

1/2

Nguyên lý mạch tích hợp. Tống Văn On. NXB Lao động xã hội. 2007.

Thiết kế mạch số với VHDL & Verilog. Tống Văn On. NXB Lao động xã hội. 2007.

Digital VLSI Systems Design. Dr. S. Ramachandran. Springer. 2007.

Digital Integrated Circuits - A Design Perspective. Jan M. Rabaey, Anantha Chandrakasan, Borivoje Nikolic. Mc Graw Hill.

6 http://dce.hust.edu.vn

Page 7: ThietkeIC_Baigiang.v1.2

2/2

Analysis and Design of Digital IC. David A.Hodges, Horace G.jackson, Resve A.Saleh. Mc Graw Hill.

The Design Warrior‟s Guide to FPGA. Clive Max Maxfield. 2004.

Circuit Design with VHDL. Volnei A. Pedroni. MIT Press. 2006.

Fundamentals Of Digital Logic With VHDL Design 2nd Edition. Stephen Brown, Zvonko Vranesic. McGraw Hill. 2005.

7 http://dce.hust.edu.vn

Page 8: ThietkeIC_Baigiang.v1.2

FPGA4U, kit, usb-powered, altera, niosII & linux, http://fpga4u.epfl.ch/wiki/Main_Page

SecretBlaze, bộ xử lý RISC 32bit dựa trên MicroBlaze, Xilinx, mã mở VHDL, 5 công đoạn, cache, ngắt. http://www.lirmm.fr/~barthe/index.php/page/SecretBlaze.html

Các project và module mã nguồn mở http://www.opencores.org/

Các thủ thuật trên VHDL http://vhdlguru.blogspot.com/

8 http://dce.hust.edu.vn

Page 9: ThietkeIC_Baigiang.v1.2

ftp://dce.hut.edu.vn/tiennd/thietkeic

9 http://dce.hust.edu.vn

http://www.mediafire.com/#09qgoawx2y3id

Page 10: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Phần I:

• Các linh kiện để thiết kế IC (3)

• Các qui trình sản xuất IC (1)

Page 11: ThietkeIC_Baigiang.v1.2

IC, Integrated Circuit, là một mạch điện tử mà tất cả các thành phần đều được đặt trên một đế bán dẫn, không thể tách rời nhau được.

11 http://dce.hust.edu.vn

Vi điều khiển Intel 8742: CPU 12MHz, RAM 128B, EPROM 2KB.

Page 12: ThietkeIC_Baigiang.v1.2

Thực hiện một / vài chức năng điện tử cụ thể.

12 http://dce.hust.edu.vn

Chức năng có thể lập trình được.

Thiết kế = IC chuẩn + custom IC (glue logic) Tham khảo: hình ảnh IC đầu tiên dạng 2D, IC đầu tiên dạng 3D

Page 13: ThietkeIC_Baigiang.v1.2

Tất cả các thành phần của IC được sản xuất đồng thời và hàng loạt, chứ không phải từng IC đơn lẻ.

Ít tốn linh kiện.

Được tối ưu về không gian, 1 triệu transitor/mm2

Module hóa quá trình thiết kế mạch điện tử.

Giảm chi phí nghiên cứu, triển khai, nâng cấp...

Giảm giá thành thiết bị, chức năng.

13 http://dce.hust.edu.vn

Page 14: ThietkeIC_Baigiang.v1.2

Tiêu thụ ít năng lượng.

Được tối ưu hóa về tốc độ...

Đồng bộ và tin cậy.

Được kiểm thử bởi nhà sản xuất.

Tuổi thọ cao.

14 http://dce.hust.edu.vn

Page 15: ThietkeIC_Baigiang.v1.2

1/2

Die: khuôn, chip sillicon.

Leadframe: khung dẫn, chứa các chân nối ra ngoài rắp ráp lên board dễ hơn

Wire: nối các chân IO trên die ra các chân tương ứng trên leadframe.

Vỏ: phủ kín, đóng gói leadframe & die bằng ceramic, plastic… bảo vệ, tản nhiệt.

15 http://dce.hust.edu.vn

Page 17: ThietkeIC_Baigiang.v1.2

Vỏ - package - có nhiều hình dạng khác nhau.

17 http://dce.hust.edu.vn

Ball

Grid

Array

Dual

Inline

Package

Small

Outline

Package

Plastic

Leader

Chip

Carrier

Zigzag

Inline

Package

Tham khảo một số dạng vỏ

Page 18: ThietkeIC_Baigiang.v1.2

1/2

Độ dài mỗi cạnh chừng vài mm.

Kích thước IC được đo bằng số transistor hoặc số cổng logic, (cổng là đơn vị đo tương ứng với cổng NAND 2 đầu vào).

Xilinx Spartan II XC2S200, 540k đ, 200k cổng.

Intel Core i7, 6.6m đ, >1 tỷ cổng.

18 http://dce.hust.edu.vn

Cấu thành bởi các transistor CMOS. Một cổng NAND có 4 transistor.

Page 19: ThietkeIC_Baigiang.v1.2

2/2

Quy trình xử lý N nm sẽ cho transistor nhỏ nhất có chiều dài N nm. Ví dụ, qui trình 28 nm.

Kích thước đặc trưng nhỏ nhất λ ≈ ½ chiều dài transistor nhỏ nhất.

Các bộ phận chức năng cấu thành IC được phân vùng rõ ràng. (FGPA hỗ trợ).

Intel Quad Core Intel Core i7 Intel Pentium 5 AMD Quad Core

Page 20: ThietkeIC_Baigiang.v1.2

1/2

Sử dụng các transistor lưỡng cực, Bipolar

20 http://dce.hust.edu.vn

NPN PNP

Sử dụng các transistor có cực cổng kim loại, Metal Oxide Semiconductor

nMOS Kênh N Kênh P

Page 21: ThietkeIC_Baigiang.v1.2

2/2

CMOS,

Complementary MOS

21 http://dce.hust.edu.vn

Các lớp

liên kết nối

Page 22: ThietkeIC_Baigiang.v1.2

22 http://dce.hust.edu.vn

emitor collector

base

Transistor lưỡng cực Transistor MOSFET

Page 23: ThietkeIC_Baigiang.v1.2

Mật độ tích hợp: tăng với tốc độ nhanh chóng

Cỡ nhỏ (Small Scale Integration)

Cỡ trung bình (Medium Scale Integration)

Cỡ lớn (Large Scale Integration)

Cỡ rất lớn (Very Large Scale Integration)

Hiệu năng: Tần số xung clock nhân đôi sau mỗi 2 năm

23 http://dce.hust.edu.vn

Page 24: ThietkeIC_Baigiang.v1.2

Nhu cầu từ thực tế, từ các dự đoán trong tương lai. Ví dụ, cần RAM gấp đôi.

Đặc tả các nhu cầu trên phương diện kỹ thuật. Ví dụ, cần tăng độ rộng bus địa chi.

Thiết kế: mức đỉnh – logic, thiết kế mức RTL, Register Transfer Level

Tối ưu: về tốc độ, không gian, năng lượng, về công nghệ sản xuất ns.

Ứng dụng: Release To Menufacturer

24 http://dce.hust.edu.vn

Nhu cầu

Đặc tả

Thiết kế

Kiểm thử

prototype

Tối ưu

Sản xuất

Kiểm thử

Ứng dụng

ASIC

Page 25: ThietkeIC_Baigiang.v1.2

1/2

25 http://dce.hust.edu.vn

Tạo thỏi silicon

Cắt thành wafer

Mài bóng wafer

Oxi hóa wafer

Phủ cản quang

In litô

Rửa bề mặt

Phủ kim loại

Kiểm thử

Đóng gói

Page 26: ThietkeIC_Baigiang.v1.2

26 http://dce.hust.edu.vn

Wafer thành phẩm

Page 28: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

28 http://dce.hust.edu.vn

Field Programmable Gate Array

Application Specific Integrated Circuit

• Tổng quan (1)

• Kiến trúc (2)

• Qui trình thiết kế FPGA, ASIC (1)

• Giới thiệu công cụ thiết kế và triển khai (4)

Page 29: ThietkeIC_Baigiang.v1.2

1/4

1980s, VLSI xuất hiện thiết kế IC theo nhu cầu.

Độ phức tạp tăng 40% mỗi năm.

Nhu cầu thiết kế tăng 15% mỗi năm Mức độ tích hợp của PCB trên mỗi die

29 http://dce.hust.edu.vn

Page 30: ThietkeIC_Baigiang.v1.2

2/4

Silicon, 2010

30 http://dce.hust.edu.vn

Mật độ

(Gb/cm2)

Tốc độ truy

xuất (ns)

DRAM 8.5 10

DRAM (logic) 2.5 10

SRAM (cache) 0.3 1.5

Mật độ

(Mgate/cm2)

Năng lượng

(W/cm2)

Xung đồng hồ

(GHz)

Custom 25 54 3

Std. Cell 10 27 1.5

Gate 5 18 1

Single-Mask GA 2.5 12.5 0.7

FPGA 0.3 4.5 0.25

Die Area: 2.5x2.5 cm

Voltage: 0.6 V

Technology: 0.07 m

Page 31: ThietkeIC_Baigiang.v1.2

3/4

31 http://dce.hust.edu.vn

Intel 4004 (1971) - thiết kế thủ công

Page 32: ThietkeIC_Baigiang.v1.2

4/4

ASIC ra đời so nhu cầu về các hoạt động thiết kế ngày càng tăng.

Hội nghị các vi mạch tùy biến theo khách hàng của IEEE đưa ra các tài liệu hướng dẫn phát triển custom IC.

Thiết kế = IC chuẩn + custom IC

Từ custom IC thuật ngữ Application Specific IC

32 http://dce.hust.edu.vn

Page 33: ThietkeIC_Baigiang.v1.2

ASIC không đồng nhất với custom IC. IC chuẩn: ROM, RAM, DRAM, Processor, etc.

ASIC: chip cho đồ chơi biết nói, chip cho 1 vệ tinh, chip cho bộ xử lý dưới dạng cell cùng với mạch logic.

Qui tắc phổ biến: “Nếu một IC xuất hiện trong sách tra cứu, thì đó không phải là ASIC”.

ASIC, IC chuyên dụng.

Page 34: ThietkeIC_Baigiang.v1.2

34 http://dce.hust.edu.vn

Casio FX-300ES USB to LPT

Page 35: ThietkeIC_Baigiang.v1.2

1/2

ASIC đem lại cơ hội sản xuất với số lượng lớn; các bộ phận được tiêu chuẩn hóa để nhanh chóng trở thành sản phẩm thương mại.

Giá thành giảm theo số lượng.

None Reducing Cost.

Quy trình Cost Down trong các nhà máy.

Hiệu quả kinh tế trong thiết kế Thực hiện prototype nhanh với số lượng thấp.

Thiết kế theo nhu cầu, chuyên sâu, số lượng lớn.

35 http://dce.hust.edu.vn

Page 36: ThietkeIC_Baigiang.v1.2

2/2

Có công cụ CAD cần thiết để đạt được hiệu quả trong chiến lược thiết kế:

Thiết kế mức hệ thống: VHDL

Thiết kế mức vật lý, từ VHDL tới silicon, timing closure (Monterey, Magma, Synopsys, Cadence, Avant!)

Chiến lược thiết kế: Hierarchy - phân cấp; Regularity; Modularity - mô đun; Locality.

36 http://dce.hust.edu.vn

Page 37: ThietkeIC_Baigiang.v1.2

Thiết kế là một quá trình liên tục cân đối các tham số đầu vào, để đạt được hiệu quả mong đợi.

37 http://dce.hust.edu.vn

• chức năng, thời gian, tốc độ, năng lượng

Hiệu năng

• chi phí sản xuất

Kích thước die

• lập lịch và chi phí nghiên cứu

Thời gian thiết kế

• lập lịch, chi phí nguồn lực, chi phí sản xuất

Test và Stability Test

Page 38: ThietkeIC_Baigiang.v1.2

38 http://dce.hust.edu.vn

Ý tưởng thiết kế

Đặc tả thiết kế

Thiết kế hệ thống

HDL

Giả lập

Thiết kế mức cổng

Tổng hợp

Giả lập

Thư viện

cell

Layout

Kiểm tra Layout

Sản xuất

Kiểm thử chip

Sản phẩm

c := a + b;

if (c = 1) then cf := 1;

Simulink

Synopsys

Cadence

Novelus

Page 39: ThietkeIC_Baigiang.v1.2

39 http://dce.hust.edu.vn

Mức thiết bị

Mức mạch

Mức cổng

Mức mô-đun

chức năng

Mức hệ thống

Page 40: ThietkeIC_Baigiang.v1.2

1/2

40 http://dce.hust.edu.vn

Full

Custo

m I

C

• Thiết kế rất phức tạp, hàng trăm man-year

• ~ 25M gate

• Phải sản xuất với số lượng cực lớn mới

Cell

Base I

C

• Các cell là Flip-Flop, gate, hoặc bộ xử lý đã được định nghĩa trước, được tái sử dụng lại,

• Sản xuất với số lượng 100k sản phẩm/ năm P

rog

ram

able

Logic

Devic

e

• Dựa trên công nghệ ROM/PROM, cấu tạo chỉ gồm các lớp cổng AND, OR và một số Flip Flop.

• Sản phẩm khá đơn giản với khoảng 1K gate.

• Sản xuất đơn lẻ được

Ga

te A

rra

y

• Các trans tạo sẵn thảnh mảng, và nhà thiết kế thực hiện việc tạo các liên kết nối giữa chúng bằng cách sử dụng các thư viện cell và CAD.

• Sản xuất đơn lẻ được.

FPGA CPLD

Page 41: ThietkeIC_Baigiang.v1.2

2/2

41 http://dce.hust.edu.vn

FPGA, PLD, CPLD được xếp vào nhóm các IC lập trình được bởi người dùng

Page 42: ThietkeIC_Baigiang.v1.2

1/4

42 http://dce.hust.edu.vn

Nhu cầu thứ 1:

Một khi chip ASIC càng mạnh thì thiết kế càng tinh vi, phức tạp, càng tiềm tàng những sai sót lớn.

Các phần mềm hỗ trợ, giả lập chưa thực sự phản ánh hết được hoạt động thực tế của hệ thống.

Để kiểm tra thiết kế, người kĩ sư buộc phải đặt các nhà sản xuất sản xuất chip đơn lẻ và kiểm tra trên các ứng dụng, môi trường thực tốn thời gian, và tiền bạc.

cần hệ nền kiểm thử phần cứng nhanh chóng.

Page 43: ThietkeIC_Baigiang.v1.2

2/4

43 http://dce.hust.edu.vn

Năm 1984, Ross Freeman, Bernard Vonderschmitt, đồng sáng lập công ty Xillinx.

Năm 1985, Xilinx đưa ra dòng FPGA thương mại đầu tiên, XC2064. Năm 2006, Freeman được vinh danh tại National Inventors Hall of Fame vì sáng chế này.

FPGA dựa trên các công nghệ nền tảng như PROM và PLD, nhưng với kiến trúc mới hiệu quả hơn.

Các thiết kế IC được thử nghiệm prototype trên các chip FPGA ngay lập tức tiết kiệm thời gian và tiền bạc.

Page 44: ThietkeIC_Baigiang.v1.2

3/4

44 http://dce.hust.edu.vn

Nhu cầu thứ 2:

Các nhà sản xuất lớn chỉ cung cấp các chip thông dụng trên thị trường, với số lượng lớn. bỏ qua nhu cầu về các IC chuyên dụng có số lượng thấp, nhưng tổng nhu cầu thì rất lớn.

Nhu cầu thứ 3:

Ban đầu, các chip lập trình được có giá thành khá cao và tốc độ chậm, chỉ sử dụng trong các phòng thí nghiệm.

Khi công nghệ sản xuất phát triển vượt bậc, thì các chip lập trình được ngày càng mạnh và rẻ ứng dụng đại trà.

Page 45: ThietkeIC_Baigiang.v1.2

4/4

45 http://dce.hust.edu.vn

Hệ quả: từ phòng thí nghiệm với ứng dụng

FPGA không chỉ là chip prototype trong các phòng thí nghiệm, mà thực sự trở thành sản phẩm thường mại đại chúng.

Thị trường phần cứng được cung cấp một dòng sản phẩm có thể thiết kế và sử dụng được ngay.

Các công ty vừa nhỏ, các kỹ sư hoạt động độc lập, không phải lệ thuộc vào các IC của các nhà sản xuất lớn tự do sáng tạo.

myProcessor myDecoder

Page 46: ThietkeIC_Baigiang.v1.2

vs

46 http://dce.hust.edu.vn

CustomIC FPGA

Sản xuất nhỏ

Tối ưu tính năng

Chi phí chế tạo thấp

Sản xuất lớn

Tối ưu tốc độ, năng lượng…

Chi phí chế tạo lớn

Page 47: ThietkeIC_Baigiang.v1.2

1/2

Yếu tố linh hoạt và mở rộng rất quan trọng

47 http://dce.hust.edu.vn

Linh hoạt & Mở rộng

được 31%

Hiệu năng cao (tốc độ

nhanh) 15%

Giá rẻ 17% Dùng ít năng lượng 3%

Giải pháp hoàn chỉnh

18%

Chất lượng,

Tin cậy 9%

Dễ dùng 4%

Khác 3%

Page 48: ThietkeIC_Baigiang.v1.2

2/2

48 http://dce.hust.edu.vn

Hard IP

Hard IP

Soft IP

Soft IP

Others

... ...

EDA

Tools

Công cụ

thiết kế

điện tử

System On Chip IP-based

Platform-based

Tích

hợp

EDA

Application specific integration platform

EDA

Tools

Derivative

Hard IP

Others

Soft IP EDA

Tools

Tùy biến một phần bởi nhà thiết kế đầu cuối

Tùy biến bởi nhà sản xuất IC

Page 49: ThietkeIC_Baigiang.v1.2

49 http://dce.hust.edu.vn

Intel Core i7 die

Page 50: ThietkeIC_Baigiang.v1.2

RCC, Reconfigurable Computing, là các thiết bị lập trình được. Ví dụ: RAM, ROM, PLA, PAL.

FPGA với tính chất lập trình được cao, ưu việt, là đại diện của RCC.

50 http://dce.hust.edu.vn

Input: Địa chỉ

Output: Giá trị

Giá trị = f(Địa chỉ)

y = f(x)

PAL RAM/ROM

Page 51: ThietkeIC_Baigiang.v1.2

Programable Array Logic (a)

Programable ROM (b)

51 http://dce.hust.edu.vn

A B C

PAL thương mại

ABC

Lập

trình

Yêu cầu: F = AB = ABC + ABC

Page 52: ThietkeIC_Baigiang.v1.2

52 http://dce.hust.edu.vn

Programable Logic Array, cả ma trận AND và OR đều lập trình được.

Tiết kiệm dung lượng ma trận.

Bị hạn chế bởi số lượng các cổng AND khi số đầu vào của cổng OR lớn hơn số cổng AND.

Trễ truyền lan lớn hơn và mật độ tích hợp nhỏ.

Page 53: ThietkeIC_Baigiang.v1.2

Generic Array Logic nâng cấp từ PAL, gồm một ma trận AND lập trình được (cấu tạo từ EEPROM) và ma trận OR cố định.

Tuy nhiên, các cổng OR nằm trong các macrocell được nối với flip-flop và các bộ dồn kênh để có thể chọn tín hiệu ra.

Tên gọi chung của các thiết bị như PAL, PLA, GAL… là Programable Logic Device

53 http://dce.hust.edu.vn

Ví dụ: Dùng GAL điều khiển

đèn giao thông:

Page 54: ThietkeIC_Baigiang.v1.2

FPGA gồm 3 thành phần chính Khối logic – Logic Block (LB): đơn vị xử lý.

Khối Vào ra – IO cell: giao tiếp với bên ngoài.

Liên kết nối – Interconnection: liên kết các đơn vị xử lý.

Thành phần khác Buffer

ClockDll

54 http://dce.hust.edu.vn

Configurable

Logic Block

I/O Block Connec

t

Conne-

ction

Page 55: ThietkeIC_Baigiang.v1.2

1/3

Cả 3 thành phần: khối logic, khối vào ra, liên kết nối, đều lập trình được.

Lập trình cho khối logic là hành động: “có kết nối hay không phần tử logic A với phần tử logic B?”

Lập trình cho khối vào ra là hành động: “có kết nối hay không đầu ra logic A với chuẩn ngoại vi B?”

Lập trình cho liên kết nối là hành động: “có kết nối hay không khối logic A với khối logic/vào ra B?”

55 http://dce.hust.edu.vn

Page 56: ThietkeIC_Baigiang.v1.2

2/3

Với FPGA, lập trình là quá trình định tuyến giữa các phần tử logic, flipflop… đã được chế tạo cố định sẵn, để thực thi một tác vụ nào đó.

Một tuyến đều được chế tạo sẵn, và đính kèm một khóa đóng mở. Tuyến được thiết lập hoặc hủy, tương ứng với trạng thái khóa đóng hay mở.

Mỗi trạng thái của khóa đóng/mở ứng với một bit nhớ trạng thái 0/1 tương ứng.

Tập hợp các bít nhớ tạo thành bộ nhớ cấu hình cho FPGA.

Bảng định tuyến được lưu trữ trong bộ nhớ.

Công cụ EDA sẽ dịch các file HDL thành bảng định tuyến.

Page 57: ThietkeIC_Baigiang.v1.2

3/3

57 http://dce.hust.edu.vn

Bộ nhớ cấu hình

HDL

• c := a + b;

• if (c == 1) then cf := 1;

Net List / RTL

BIT file

• 01000100

• 11010101

• 10001001

Phân tích

Ánh xạ các kết nối

vào FPGA cụ thể

Page 58: ThietkeIC_Baigiang.v1.2

Tất cả ASIC lập trình được, bao gồm FPGA, đều chứa các khối logic (cell logic) cơ bản giống nhau tạo thành dải.

58 http://dce.hust.edu.vn

LB

LB

LB

LB

LB

LB

LB

LB

LB

LB

I/O

Cell

I/O

Cell

I/O

Cell

I/O

Cell

I/O

Cell

I/O

Cell

I/O Cell I/O Cell I/O Cell

I/O Cell I/O Cell I/O Cell

Có 4 loại khối logic:

Dựa vào bảng tìm kiếm (LUT – Lookup Table) Xilinx

Dựa vào bộ ghép kênh (Multiplexers) Actel

Dựa vào PAL/PLA Altera

Transistor Pairs

Page 59: ThietkeIC_Baigiang.v1.2

59 http://dce.hust.edu.vn

Mux 2x1 có thể

thực hiện được

các hàm bên S

0

1

MUX A0

A1

SA

Biểu diễn

mức

transistor

Cấu trúc cell logic ACT 1 (đơn module)

Cell ACT 1 chỉ có một module logic.

Cell ACT 2, 3 có nhiều module logic hơn và có Flip Flop riêng.

Cấu tạo Flip Flop

Page 60: ThietkeIC_Baigiang.v1.2

1/3

Bảng tìm kiếm, LUT, Look-Up Table, là một SRAM có K đầu vào với 2K

bit nhớ, thực hiện được mọi hàm logic có K biến.

Thông thường, K = 4.

60 http://dce.hust.edu.vn

Tín hiệu ra của một LUT có thể quay trở lại, thành đầu vào của chính LUT đó, hoặc LUT khác.

Trong một LB, thường có 3 LUT và được gọi là bộ thực hiện hàm F, G và H.

G3 G

Func.

Gen.

WE

G4

G2

G1

0

10 11 12 13

14 15

4 5 6 7

8 9

3 2

1 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 1

G4 G3 G2 G1 1

RAM 16bit

G3

G4

G2

G1

=

Page 61: ThietkeIC_Baigiang.v1.2

2/3

Các LUT F và G tương đương và độc lập với nhau, thực thi các hàm 4 biến và đưa kết quả tính toán ra ngoài CLB, hoặc nhớ vào FF.

Nếu phép toán có nhiều hơn 4 biến thì LUT F, G sẽ đưa kết quả tới LUT H để mở rộng thêm.

61 http://dce.hust.edu.vn

Flip-Flop đóng vai trò:

• Bit nhớ hoặc

• Chốt dữ liệu

Hai FF có thể set/reset đồng bộ/không đồng bộ, tích cực theo sườn âm/dương…

Cấu trúc cơ bản của LB dạng LUT

Page 62: ThietkeIC_Baigiang.v1.2

3/3

62 http://dce.hust.edu.vn

Khối logic lập trình

được, CLB, của

XC4000 E/X

Số liệu đưa vào LB có thể được xử lý bởi các hàm 4 đầu vào, có thể được chốt ở thanh ghi, có thể được chọn kênh, hoặc bởi cả 3 thao tác trên.

Page 63: ThietkeIC_Baigiang.v1.2

63 http://dce.hust.edu.vn

LE

(LB

) của A

ltera

Cyclo

ne I

I

Page 64: ThietkeIC_Baigiang.v1.2

Còn được gọi là CrossPoint FPGA.

Số lượng cổng ít, ~ 4000

64 http://dce.hust.edu.vn

Page 65: ThietkeIC_Baigiang.v1.2

FPGA kế thừa nhiều ý tưởng thiết kế của các sản phẩm trước sự quen thuộc trong kiến trúc.

Nhưng số chức năng, mức độ tích hợp, khả năng tính toán của từng đơn vị xử lý trong FPGA có khác nhau, gồm Coarse /kɔ:s/ , và Fine.

Coarse-grained: Đơn vị xử lý là một tập hợp của các PLD, các khối cấu hình được CLB, thực thi được hàm phức tạp, có yêu cầu tính toán lớn. Ví dụ: Actel Mux, Xilinx LUT.

Fine-grained: Đơn vị xử lý chỉ gồm các khối cấu hình được CLB nhỏ, thực thi các hàm logic đơn giản. Ví dụ Transistor Pairs.

65 http://dce.hust.edu.vn

Page 66: ThietkeIC_Baigiang.v1.2

66 http://dce.hust.edu.vn

LB

LB LB

LB

LB

LB

LB LB LB

Ma trận đối xứng

Symmetrical Array LB

LB LB

LB

LB

LB LB

LB LB

LB

LB LB LB LB LB

Cấu trúc dòng

Row-based

Sea-of-Gates PLD

PLD

PLD

PLD

PLD

PLD

PLD

PLD PLD phân cấp

Hierarchical

(CPLD)

Page 67: ThietkeIC_Baigiang.v1.2

1/3

Liên kết nối dài, tín hiệu clk liên thông toàn bộ dải.

Liên kết nối trực tiếp giữa 2 khối LB.

Liên kết nối đa năng gồm nhiều kết nối và các chuyển mạch.

67 http://dce.hust.edu.vn

LB

SM

LB

SM

Kết nối đa năng Kết nối trực tiếp Kết nối dài

SM Ma trận

chuyển mạch

Page 68: ThietkeIC_Baigiang.v1.2

2/3

68 http://dce.hust.edu.vn

Kết nối dài

Kết nối trực tiếp Kết nối đa năng

Page 69: ThietkeIC_Baigiang.v1.2

3/3

Phần lớn các kết nối tạo thành các lưới kết nối theo hàng và theo cột.

Giao cắt giữa các kết nối theo hàng và theo cột sẽ tập trung các điểm cần lập trình kết nối, tạo thành ma trận chuyển mạch (Switching Matrix), nằm phân tán trong FPGA.

69 http://dce.hust.edu.vn

SM

Page 70: ThietkeIC_Baigiang.v1.2

70 http://dce.hust.edu.vn

LB LB

LB LB

LB LB

Kết nối dài

Page 71: ThietkeIC_Baigiang.v1.2

71 http://dce.hust.edu.vn

Cyclone

low end

Arria

middle end

Stratix

high end

Virtex

high end

Arrix

middle end

Spartan

low end

Page 72: ThietkeIC_Baigiang.v1.2

72 http://dce.hust.edu.vn

Xilinx 36%

Altera 31%

Actel 10%

Vantis 7%

Lattice 6%

Lucent 6%

QuickLogic 2% Cypress

2%

Page 73: ThietkeIC_Baigiang.v1.2

Ngôn ngữ HDL phù hợp.

Bộ công cụ CAD, EDA phù hợp.

Ước lượng được số lượng các CLB cần thiết

Dự kiến số lượng các chân I/O cần thiết.

Điện áp hoạt động. Các FPGA mới sử dụng mức điện áp thấp LVTTL, LVCMOS, đòi hỏi phải chuyển đổi điện áp để tương thích với điện áp TTL, cung cấp một hoặc nhiều vùng sử dụng đồng thời đa mức điện áp.

Tốc độ FPGA.

Khả năng tài chính.

73 http://dce.hust.edu.vn

Page 74: ThietkeIC_Baigiang.v1.2

Copyright (c) 10/2006 by NPB 74

1/4

Thiết kế hệ thống (System Design)

Tích hợp vào ra (I/O integration)

Đặc tả thiết kế (Design Specification)

Tổng hợp (Synthesis)

Kiểm tra thiết kế (Design Verification)

Page 75: ThietkeIC_Baigiang.v1.2

Copyright (c) 10/2006 by NPB 75

2/4

Bước 1 - Thiết kế hệ thống Phần chức năng thực hiện trên FPGA

Phần chức năng này tích hợp (kết hợp) với phần còn lại của hệ thống như thế nào

Bước 2 - Tích hợp vào ra với phần còn lại của hệ thống

Page 76: ThietkeIC_Baigiang.v1.2

Copyright (c) 10/2006 by NPB 76

3/4

Bước 3 - Đặc tả thiết kế

Mô tả chức năng của thiết kế bằng: Các trình soạn sơ đồ logic

Các ngôn ngữ đặc tả phần cứng

Kết hợp mô phỏng

Bước 4 - Tổng hợp logic

Giống bước Tổng hợp logic trong quy trình đầy đủ

Thực hiện tối ưu hóa trễ

năng lượng hao phí

Page 77: ThietkeIC_Baigiang.v1.2

Copyright (c) 10/2006 by NPB 77

4/4

Bước 5 - Kiểm tra thiết kế

Thực hiện các mô phỏng, phân tích cuối cùng (RTL, thời gian…)

Xác định các thông số của ASIC đã thiết kế (tần số xung nhịp…)

Nạp chip và chạy thử trên hệ thống!

Page 78: ThietkeIC_Baigiang.v1.2

1/2

78 http://dce.hust.edu.vn

Spactan II 200 Spactan II 300

PCI 32bits

RS232

Userguide.pdf

Page 79: ThietkeIC_Baigiang.v1.2

2/2

79 http://dce.hust.edu.vn

ProASIC3 Evaluation Board Userguide.pdf

Page 80: ThietkeIC_Baigiang.v1.2

1/2

IDE của nhà sản xuất FPGA.

Chỉ có nhà sản xuất mới thấu hiểu nguyên tắc hoạt động của FPGA của họ. chỉ có các IDE của nhà sản xuất mới routing, timing, cấu hình được cho FPGA.

EDA của bên thứ 3 chỉ xử lý mức logic, rồi gọi IDE của nhà sản xuất để đảm nhiệm mức vật lý.

80 http://dce.hust.edu.vn

Atera Xilinx Actel

Page 81: ThietkeIC_Baigiang.v1.2

2/2

Một số gói chương trình của bên thứ 3: Leonardo Spectrum, CT tổng hợp của Mentor Graphics

Synplify, CT tổng hợp của Synplicity

ModelSim , CT mô phỏng của Mentor Graphics.

Active-HDL, CT thiết kế và mô phỏng của Aldec Active

81 http://dce.hust.edu.vn

Page 83: ThietkeIC_Baigiang.v1.2

• Tạo thực thể thiết kế bằng code mẫu, lấy từ Language Assistant.

• Tạo thực thể thiết kế, bằng giao diện Block Diagram.

• Tra cứu lỗi và xử lý “port mapping” trong quá trình thiết kế bằng Block

Diagram.

• Chạy giả lập mức logic,

• Cách đưa giá trị vào các tín hiệu để giả lập logic.

83 http://dce.hust.edu.vn

Page 84: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Phần III:

Very high speed integrated circuit Hardware Description Language

• Giới thiệu các ngôn ngữ HDL (2)

• Cấu trúc mã nguồn VHDL (2)

• Mô hình lập trình VHDL

• Các phương pháp thiết kế

Page 85: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

85 http://dce.hust.edu.vn

Page 86: ThietkeIC_Baigiang.v1.2

1/3

Hardware Description Language, ngôn ngữ mô tả phần cứng.

C = A and B

A <= B

rising_edge(CLK)

C <= „1‟ 5V

A := B + C Module1(A);

Module(B);

A<=B;

Full

Adder Full

Adder Full

Adder

M1

M2

Mọi kết cấu phần cứng đều có thể biểu diễn dưới dạng các lệnh phần mềm, các hàm và thủ tục.

Page 87: ThietkeIC_Baigiang.v1.2

2/3

Mô tả được kiến trúc xử lý tương tranh (đặc trưng riêng của phần cứng so với phần mềm).

C <= A and B;

L <= P and Q;

X <= C and L;

C

L X C <= A and B;

B <= C;

Sử dụng các lệnh tuần tự để mô phỏng xử lý song song của phần cứng dễ làm quen, dễ lập trình.

for (i=1; i<3; i++)

{

a[i]:= a[i] + b[i]

}

b b b a a a

a a a

+ thay 3

bằng J?

Xử lý tuần tự của

phần cứng biểu

diễn thế nào?

Page 88: ThietkeIC_Baigiang.v1.2

3/3

Cho phép giả lập các điều kiện đầu vào để kiểm thử thiết kế phần cứng -> thực hiện test-driven, unitest.

Khi áp dụng source HDL lên 1 chip lập trình được nào đó thì các trình giả lập có thể tính toán chính xác độ trễ truyền lan, dạng sóng… tại mỗi điểm.

Gợi ý: nếu không chắc chắn về thiết kế mạch số từ các phần từ logic, có thể viết bằng VHDL rồi tham khảo phân tích RTL.

00 11 00 111 00 00 111 00 11111

Page 89: ThietkeIC_Baigiang.v1.2

Có 2 ngôn ngữ, được sử dụng rộng rãi và công nhận bởi IEEE:

VHDL

Verilog

Các ngôn ngữ khác như AHDL, JHDL, RHDL…

Ngoài HDL, còn có HVL – Hardware Verification Language như OpenVera,Superlog

89 http://dce.hust.edu.vn

Page 90: ThietkeIC_Baigiang.v1.2

Là ngôn ngữ lập trình trừu tượng, đối lập với thiết kế mức logic, mức transistor.

Phù hợp với phương pháp thiết kế top-down.

Giảm thời gian thiết kế, kiểm thử, sản xuất…

Giảm chi phí kỹ thuật không lặp lại None Recurring Enginnering.

Tái sử dụng thiết kế.

Dễ debug, tính tài nguyên.

90 http://dce.hust.edu.vn

C <= A + B

chi phí

HDL

? cell ? tốc độ

? triger ? phần tử logic

Page 91: ThietkeIC_Baigiang.v1.2

91 http://dce.hust.edu.vn

Mô tả phần cứng bằng HDL.

Kiểm thử nguyên lý bằng giả lập trên HDL.

Kiểm tra chi tiết bằng phân tích RTL.

Chọn IC lập trình được.

Gắn kết các chân IO của phần cứng HDL với IC.

Biên dịch phần cứng HDL theo IC.

Nạp phần cứng HDL lên IC.

Page 92: ThietkeIC_Baigiang.v1.2

1/3

Very high speed integrated circuit Hardware Description Language

1980, ngôn ngữ HDL đầu tiên, VHDL được ra đời theo mệnh lệnh của bộ quốc phòng Mỹ.

VHDL dùng để ghi nhận cách hoạt động của các ASIC mà các công ty cung cấp sử dụng trong thiết bị quân sự giống đặc tả cú pháp tài liệu.

Bộ QP yêu cầu VHDL phải kế thừa cú pháp và các định nghĩa của ngôn ngữ Ada (mở rộng của Pascal) để tái sử dụng.

92 http://dce.hust.edu.vn

Page 93: ThietkeIC_Baigiang.v1.2

2/3

1983, , , Intermetrics, góp kinh nghiệm về ngôn ngữ bậc cao và thiết kế top-down để phát triển VHDL.

1987, bộ QP tuyên bố: “Tất cả mạch điện tử số đều được mô tả trong VHDL”. VHDL cũng được công nhận là chuẩn IEEE 1076. Mọi hệ thống con điện tử của máy bay F-22 đều đặc tả bởi VHDL.

Lúc này, VHDL đã là một chuẩn công nghiệp, nhưng ít công cụ hỗ trợ.

93 http://dce.hust.edu.vn

Page 94: ThietkeIC_Baigiang.v1.2

3/3

1996, các công cụ giả lập logic, có thể hiểu cú pháp VHDL xuất hiện nhanh chóng.

Sau đó, các công cụ tổng hợp, với đầu vào là VHDL, đầu ra là mô tả mạch phần cứng thực thi.

Chuẩn IEEE 1164 được bổ sung,với nhiều kiểu logic đa giá trị khác nhau (U, Z, X…) (Sẽ được thường xuyên sử dụng trong code VHDL)

01/2009, VHDL 4.0, còn gọi là VHDL 2008, là chuẩn IEEE `

94 http://dce.hust.edu.vn

library IEEE;

IEEE.std_logic_1164.all;

VHDL

VHDL wiki

Page 95: ThietkeIC_Baigiang.v1.2

1/2

Có tính định kiểu mạnh.

Không phân biệt chữ hoa, thường.

Cho phép tạo mảng với index tăng dần hoặc giảm dần. Ví dụ: bienx : out STD_LOGIC_VECTOR(2 downto 1)

Có thể đọc/ghi file, thường dùng để giả lập, tạo số liệu vào, và thẩm định kết quả.

Một người ít kinh nghiệm cũng có thể viết VHDL và giả lập thành công, nhưng không chắc đã tổng hợp được lên một thiết bị vật lý, hoặc vượt quá khả năng thực tế.

Người dùng có thể dùng các VHDL IDE như Altera Quatus, Xilinx ISE… để tạo sơ đồ RTL.

95 http://dce.hust.edu.vn

Page 96: ThietkeIC_Baigiang.v1.2

2/2

Có thể chạy giả lập để xem dạng sóng tín hiệu với các testbench tương ứng.

Khi source VHDL được dịch dưới dạng “cổng và kết nối”, tức là đã được ánh xạ lên một thiết bị vật lý như CPLD, FPGA, thì đó chính là một phần cứng thực sự.

Phù hợp với thiết kế mức hệ thống, vì cho phép kiểm tra hành vi của hệ thống, giả lập mà không cần thông qua công cụ tổng hợp lên phần cứng.

Mô tả được tính tương tranh của phần cứng - concurrent system.

1 mã nguồn VHDL phù hợp với nhiều phần cứng.

96 http://dce.hust.edu.vn

Page 97: ThietkeIC_Baigiang.v1.2

1/3

1983~1984, Phil Moorby và Prabhu Goel đã phát triển xong một ngôn ngữ HDL, và được Gateway Design Automation công bố với tên Verilog, cùng trình mô phỏng Verilog.

1985, ra mắt bản nâng cấp của ngôn ngữ và trình mô phỏng Verilog XL, có thể mô phỏng thiết kế trên 1 triệu cổng, dễ dàng debug, mô phỏng phần cứng và cả tác nhân kích thích.

1987, Verilog thỏa mãn mong đợi của các kỹ sư thiết kế và ngày càng phổ biến.

1989, mua lại Gateway.

97 http://dce.hust.edu.vn

Page 98: ThietkeIC_Baigiang.v1.2

2/3

1990, Cadence chia ngôn ngữ Verilog và trình mô phỏng Verilog-XL thành các sản phẩm riêng biệt. công khai Verilog thành chuẩn mở, cạnh tranh với VHDL. Hầu hết các xưởng chế tạo ASIC đều hỗ trợ Verilog và sử dụng Verilog-XL làm trình mô phỏng.

1993, 85% thiết kế và thẩm tra ASIC dùng Verilog.

1995, trở thành chuẩn IEEE 1364, hay còn gọi là Verilog-95 Cùng lúc, Cadence phát triển Verilog-A dành cho mạch tương tự, và là một bộ phận của Verilog-AMS (Analog and Mixed-Signal)

98 http://dce.hust.edu.vn

Page 99: ThietkeIC_Baigiang.v1.2

3/3

2005, là chuẩn IEEE 1634-2005, còn gọi là Verilog 2005.

SystemVerilog là tập bao quát hơn, gồm cả Verilog 2005 bên trong, với nhiều tính năng mới và khả năng hỗ trợ thẩm định thiết kế, mô hình hóa thiết kế (nhờ tích hợp Hardware Verification Language).

2009, SystemVerilog và Verilog đều được hợp nhất lại trong IEEE 1800-2009, còn gọi là SystemVerilog 2009.

99 http://dce.hust.edu.vn

Page 100: ThietkeIC_Baigiang.v1.2

vs 1/4

Khả năng trừu tượng

100 http://dce.hust.edu.vn

VHDL

Verilog

System

Algorithm

RTL

Logic

Gate

Khả năng mô hình hóa

Kiểu dữ liệu • VHDL: có nhiều kiểu, hàm chuyển kiểu, người dùng tự

định nghĩa kiểu.

• Verilog: kiểu đơn giản, gần với phần cứng, người dùng không tự định nghĩa kiểu được.

Page 101: ThietkeIC_Baigiang.v1.2

vs 2/4

Tái sử dụng thiết kế VHDL: các procedure và function có thể đặt trong một package và có thể được dùng lại trong thiết kế khác.

Verilog: các procedure và function phải đặt trong một module, trong các file riêng rẽ và được bao gồm bằng cách sử dụng chỉ dẫn biên dịch include.

Tính dễ học VHDL: do tính định kiểu mạnh nên có lợi cho người nhiều kinh nghiệm, và có nhiều cách để mô hình cùng một mạch số.

Verilog: tương đối dễ học với người mới bắt đầu. Tuy nhiên, các chỉ định biên dịch và ngôn ngữ PLI đính kèm lại không đơn giản.

101 http://dce.hust.edu.vn

Page 102: ThietkeIC_Baigiang.v1.2

vs 3/4

Định thời Verilog cho khả năng liên kết thông tin giữa công cụ layout với công cụ tổng hợp/mô phỏng tốt hơn VHDL,nên khả năng biểu diễn định thời chính xác hơn.

Thư viện VHDL: thư viện là miền lưu trữ trong môi trường máy chủ các thực thể (entity), kiến trúc (architecture), gói (package) và cấu hình (configuration) biên dịch được.

Verilog: không tồn tại.

Tính dễ đọc VHDL: giống ngôn ngữ Ada, Pascal.

Verilog: giống ngôn ngữ C (50%C + 50%Ada)

102 http://dce.hust.edu.vn

Page 103: ThietkeIC_Baigiang.v1.2

vs 4/4

Mô hình thông số hóa VHDL,Verilog đều cho phép. Ví dụ, một đối tượng tổng quát n-bit, rồi được cụ thể hóa với n = 8.

Sao chép cấu trúc VHDL: phát biểu generate sẽ tạo ra bản sao của các instance của cùng một đơn vị thiết kế hoặc một phần của thiết kế và kết nối một cách thích hợp.

Verilog: không có phát biểu tương tương.

103 http://dce.hust.edu.vn

Page 104: ThietkeIC_Baigiang.v1.2

1/4

104 http://dce.hust.edu.vn

06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/

Thiết kế

FPGA

thường dùng

VHDL.

Thiết kế

None FPGA

thường dùng

Verilog hoặc

System

Verilog

Page 105: ThietkeIC_Baigiang.v1.2

2/4

105 http://dce.hust.edu.vn

06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/

Ngoại trừ

System

Verilog, việc

sử dụng các

ngôn ngữ

HDL đang

giảm dần.

Page 106: ThietkeIC_Baigiang.v1.2

3/4

106 http://dce.hust.edu.vn

06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/

Kiểm thử

thiết kế

FPGA

thường dùng

VHDL.

Thiết kế

None FPGA

thường dùng

System

Verilog hoặc

Verilog

Page 107: ThietkeIC_Baigiang.v1.2

4/4

107 http://dce.hust.edu.vn

06/2011, http://blogs.mentor.com/verificationhorizons/blog/tag/vhdl/

Duy nhất

System

Verilog đang

tăng dần

khuynh

hướng sử

dụng trong

thẩm định

thiết kế.

Page 108: ThietkeIC_Baigiang.v1.2

vs

Số lượng tìm kiếm về VHDL nhiều hơn Verilog, nhưng sự khác biệt đang giảm dần.

108 http://dce.hust.edu.vn

Page 109: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

109 http://dce.hust.edu.vn

Page 110: ThietkeIC_Baigiang.v1.2

Khai báo thư viện

Phần vỏ bên ngoài

Hoạt

động

xử lý

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity Mach_AND is

port(

a : in STD_LOGIC;

b : in STD_LOGIC;

o : out STD_LOGIC

);

end Mach_AND;

architecture Cach_Hoat_Dong_01 of Mach_AND is

begin

o <= a and b;

end Cach_Hoat_Dong_01;

http://dce.hust.edu.vn

Page 111: ThietkeIC_Baigiang.v1.2

Hoạt động xử lý void Mach_AND(…..)

{ o = a & b;

}

Khai báo thư viện #include <stdio.h>

Định nghĩa giao diện void Mach_AND(

bool a,

bool b,

bool & o

);

http://dce.hust.edu.vn

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity Mach_AND is

port(

a : in STD_LOGIC;

b : in STD_LOGIC;

o : out STD_LOGIC

;

end Mach_AND;

architecture Cach_Hoat_Dong_01 of Mach_AND is

begin

o <= a and b;

end Cach_Hoat_Dong_01;

Page 112: ThietkeIC_Baigiang.v1.2

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity Mach_AND is

port(

a : in STD_LOGIC;

b : in STD_LOGIC;

o : out STD_LOGIC

);

end Mach_AND;

architecture Cach_Hoat_Dong_01 of Mach_AND is

begin

o <= a and b;

end Cach_Hoat_Dong_01;

http://dce.hust.edu.vn

Page 113: ThietkeIC_Baigiang.v1.2

Kiến trúc hoạt động thứ 1,

do công ty A phát triển.

Kiến trúc hoạt động thứ 2,

do công ty B phát triển.

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity Mach_AND is

port(

a : in STD_LOGIC;

b : in STD_LOGIC;

o : out STD_LOGIC

);

end Mach_AND;

architecture Cach_Hoat_Dong_01 of Mach_AND is

begin

o <= a and b;

end Cach_Hoat_Dong_01;

architecture Cach_Hoat_Dong_02 of Mach_AND is

begin

o <= not ( (not a) or (not b) );

end Cach_Hoat_Dong_01;

Nem chua (entity):

•Thanh Hóa (architecture)

•Hà Tây (architecture)

•Lai Vung (architecture)

http://dce.hust.edu.vn

Page 114: ThietkeIC_Baigiang.v1.2

114 http://dce.hust.edu.vn

Page 115: ThietkeIC_Baigiang.v1.2

2.1. Các đơn vị cơ bản của VHDL

Mã lệnh VHDL gồm 3 phần cơ bản sau: Khai báo LIBRARY (thư viện): gồm danh sách các thư viện sử dụng trong thiết kế (VD: ieee, std, work, …)

ENTITY (thực thể): mô tả các chân vào-ra của mạch

ARCHITECTURE (kiến trúc): mô tả hoạt động của mạch

LIBRARY: Tập hợp các đoạn lệnh thường được sử dụng

Cho phép sử dụng lại các đoạn mã lệnh và chia sẻ với các ứng dụng khác

Mã lệnh được viết theo khuôn dạng của các FUNCTION, PROCEDURE hay COMPONENT và được đặt bên trong các PACKAGE.

Copyright (c) 10/2006 by NPB 115

Page 116: ThietkeIC_Baigiang.v1.2

Các đơn vị cơ bản của VHDL (tiếp)

Copyright (c) 10/2006 by NPB 116

Page 117: ThietkeIC_Baigiang.v1.2

Nội dung chương 2

2.1. Các đơn vị cơ bản của VHDL

2.2. Khai báo thư viện (Library)

2.3. Thực thể (Entity) và thể hiện (Component)

2.4. Kiến trúc (Architecture)

2.5. Các ví dụ

Copyright (c) 10/2006 by NPB 117

Page 118: ThietkeIC_Baigiang.v1.2

2.2. Khai báo thư viện (Library)

Cú pháp: LIBRARY library_name;

USE library_name.package_name.package_parts;

Thường sử dụng các thư viện sau: LIBRARY ieee;

USE ieee.std_logic_1164.all;

LIBRARY std;

USE std.standard.all;

LIBRARY work;

USE work.all;

Copyright (c) 10/2006 by NPB 118

Page 119: ThietkeIC_Baigiang.v1.2

Khai báo thư viện (tiếp)

Các thư viện std và work ngầm định có sẵn, không cần khai báo.

Sử dụng thư viện ieee khi dùng các kiểu dữ liệu STD_LOGIC, STD_ULOGIC, …

Thư viện ieee gồm các gói (package): std_logic_1164: các mức logic STD_LOGIC và STD_ULOGIC

std_logic_arith:

Các kiểu dữ liệu SIGNED và UNSIGNED

Các thuật toán xử lý dữ liệu và các phép toán so sánh

Các hàm chuyển đổi dữ liệu

std_logic_signed: cho phép xử lý dữ liệu STD_LOGIC_VECTOR như là dữ liệu kiểu SIGNED

std_logic_unsigned: cho phép xử lý dữ liệu STD_LOGIC_VECTOR như là dữ liệu kiểu UNSIGNED

Copyright (c) 10/2006 by NPB 119

Page 120: ThietkeIC_Baigiang.v1.2

Nội dung chương 2

2.1. Các đơn vị cơ bản của VHDL

2.2. Khai báo thư viện (Library)

2.3. Thực thể (Entity) và thể hiện (Component)

2.4. Kiến trúc (Architecture)

2.5. Các ví dụ

Copyright (c) 10/2006 by NPB 120

Page 121: ThietkeIC_Baigiang.v1.2

2.3. Thực thể (Entity)

Các thành phần đặc trưng của VHDL

Thực thể là một khai báo, đặc tả giao diện của đối tượng thiết kế, qua đó, thực thế này trao đổi với thực thế khác trong cùng môi trường.

Thực thể ổ cứng, máy bay, điện thoại di động …

Page 122: ThietkeIC_Baigiang.v1.2

2.3. Thực thể (Entity)

Giống định nghĩa giao diện của class trong C++ class Mach_And { int a; int CachHoatDong(int); };

Copyright (c) 10/2006 by NPB 122

Page 123: ThietkeIC_Baigiang.v1.2

2.3. Thực thể (Entity)

Mỗi thực thể bao gồm hai thành phần Các thuộc tính, thông số (parameters)

Các đường kết nối vào, ra với bên ngoài

Page 124: ThietkeIC_Baigiang.v1.2

Thực thể (Entity)

Cú pháp: ENTITY entity_name IS

GENERIC ( --

generic_name : generic_type := <Giá trị mặc định>;

... );

PORT (

port_name : signal_mode signal_type;

port_name : signal_mode signal_type;

...);

END entity_name;

Trong đó:

Signal mode: IN, OUT, INOUT, BUFFER

Signal type: BIT, STD_LOGIC, INTEGER, …

generic type: integer, time… Copyright (c) 10/2006 by NPB 124

Page 125: ThietkeIC_Baigiang.v1.2

Ví dụ 1

Copyright (c) 10/2006 by NPB 125

Page 126: ThietkeIC_Baigiang.v1.2

Ví dụ 2: Dùng khai báo generic

entity Eight_bit_register is

generic (

LENGTH : integer := 8 -- Giá trị mặc định

Fmax: integer := 50 -- Đơn vị MHz

);

port(

CLK : in STD_LOGIC;

DIN : in STD_LOGIC_VECTOR(LENGTH downto 0);

DOUT : out STD_LOGIC_VECTOR(LENGTH downto 0)

);

end Eight_bit_register;

Page 127: ThietkeIC_Baigiang.v1.2

Ví dụ 2: (tiếp)

127

-- Nếu tạo component từ entity với độ

-- rộng bus mặc định, 8 bit.

U1 : eight_bit_register

port map( CLK => NET2342 );

-- Nếu tạo component từ entity với độ

-- rộng bus 5 bit.

U1 : eight_bit_register

generic map ( LENGTH => 5 )

port map( CLK => NET2342);

Page 128: ThietkeIC_Baigiang.v1.2

Thể hiện (Component)

Thể hiện là một thực thể vật lý được đem vào sử dụng, được nhúng vào một kiến trúc của một thực thể khác.

Giống như khái niệm thể hiện trong class của C++ { Mach_And U1, Mach_And U2; U1(a,b,tmp); U2(tmp,c,o); return o; }

Ví dụ: U1 : Mach_And generic map ( LENGTH => 5 ) port map( CLK => NET2342);

Copyright (c) 10/2006 by NPB 128

Page 129: ThietkeIC_Baigiang.v1.2

Nội dung chương 2

2.1. Các đơn vị cơ bản của VHDL

2.2. Khai báo thư viện (Library)

2.3. Thực thể (Entity) và thể hiện (Component)

2.4. Kiến trúc (Architecture)

2.5. Các ví dụ

Copyright (c) 10/2006 by NPB 129

Page 130: ThietkeIC_Baigiang.v1.2

2.4. Kiến trúc (Architecture)

Kiến trúc của một thực thể cho biết cách hoạt động của thực thể đó.

Giống như lập trình cho các method trong class của C++. void Mach_And.CachHoatDong(bool a, bool b, bool &o) { o = a & b; }

Mỗi thực thể phải đi kèm với ít nhất 1 kiến trúc.

Mỗi thực thể có thể có nhiều kiến trúc, giống như hàm ảo trong các class của C++. Việc kiến trúc nào được dùng, sẽ tùy vào cấu hình lúc sử dụng của người phát triển.

Copyright (c) 10/2006 by NPB 130

Các thành phần đặc trưng của VHDL

Page 131: ThietkeIC_Baigiang.v1.2

2.4. Kiến trúc (Architecture) (tiếp)

Cú pháp: ARCHITECTURE architecture_name OF entity_name IS

[declarations]

BEGIN

(code)

END architecture_name;

Ví dụ: ARCHITECTURE myarch1 OF nand_gate IS

BEGIN

x <= a NAND b;

END myarch1;

ARCHITECTURE myarch2 OF nand_gate IS

BEGIN

x <= NOT ( (NOT a) OR(NOT b) );

END myarch2;

Copyright (c) 10/2006 by NPB 131

Page 132: ThietkeIC_Baigiang.v1.2

1/3

Mô hình cấu trúc (Structural Style): gồm các thành phần (component) được liên kết với nhau.

Mô hình luồng dữ liệu (Dataflow Style): gồm các lệnh gán được thực hiện đồng thời.

Mô hình hoạt động (Behavioral Style): gồm các lệnh gán được thực hiện tuần tự.

Dạng kết hợp của 3 kiểu mô hình trên.

Mô hình cấu trúc và luồng dữ liệu gần với hoạt động thực tế của phần cứng hơn. Mô hình hoạt động dễ học, dễ quen hơn vì giống phần mềm.

132 Copyright (c) 10/2006 by NPB

Page 133: ThietkeIC_Baigiang.v1.2

2/3

133 http://dce.hust.edu.vn

Dataflow

• architecture myArch of myEntity is

• signal tmp: STD_LOGIC;

• begin

• x <= a;

• y <= tmp;

• z <= tmp or c;

• tmp <= a and b;

• end myArrch;

Behavior

• architecture myArch of myEntity is

• signal tmp: STD_LOGIC;

• begin

• x <= a;

• tmp <= a and b;

• process (tmp,b)

• begin

• y := tmp;

• z := tmp or c;

• end process;

• end myArrch;

Structural

• architecture myArch of myEntity is

• signal tmp: STD_LOGIC;

• component OR2

• port (

• i1 : in STD_LOGIC;

• i2 : in STD_LOGIC;

• o : out STD_LOGIC

• );

• end component;

• begin

• U1 : OR2

• port map(

• i1 => tmp,

• i2 => c,

• o => z

• );

• x <= a;

• tmp <= a and b;

• y <= tmp;

• end myArrch;

Page 134: ThietkeIC_Baigiang.v1.2

3/3

Package Gói

Entity Thực thể

Architecture (Dataflow)

Dạng luồng

Các lệnh song song

Architecture (Behavioral)

Dạng hoạt động

Các lệnh song song

Process

Các lệnh tuần tự

Architecture (Structural)

Dạng cấu trúc

134 http://dce.hust.edu.vn

Generic Ports

Component

Thể hiện

Định nghĩa Entity

Định nghĩa Architecture, kiểu

Định nghĩa Process

Page 135: ThietkeIC_Baigiang.v1.2

Nội dung chương 2

2.1. Các đơn vị cơ bản của VHDL

2.2. Khai báo thư viện (Library)

2.3. Thực thể (Entity)

2.4. Kiến trúc (Architecture)

2.5. Các ví dụ

Copyright (c) 10/2006 by NPB 135

Page 136: ThietkeIC_Baigiang.v1.2

Ví dụ 1

Trigger D xúc phát sườn dương có tín hiệu Reset tích cực mức cao.

Nếu rst = 1 thì q = 0

Ngược lại: Nếu clk chuyển từ 0 lên 1 thì q = d

Còn lại thì hệ giữ nguyên trạng thái.

Copyright (c) 10/2006 by NPB 136

Page 137: ThietkeIC_Baigiang.v1.2

Ví dụ 1 (tiếp)

1 ---------------------------------------

2 LIBRARY ieee;

3 USE ieee.std_logic_1164.all;

4 ---------------------------------------

5 ENTITY dff IS

6 PORT (d, clk, rst: IN STD_LOGIC;

7 q: OUT STD_LOGIC);

8 END dff;

9 ---------------------------------------

10 ARCHITECTURE behavior OF dff IS

11 BEGIN

12 PROCESS (rst, clk)

13 BEGIN

14 IF (rst='1') THEN

15 q <= '0';

16 ELSIF (clk'EVENT AND clk='1') THEN

17 q <= d;

18 END IF;

19 END PROCESS;

20 END behavior;

21 ---------------------------------------

Copyright (c) 10/2006 by NPB 137

Page 138: ThietkeIC_Baigiang.v1.2

Ví dụ 2

Trigger D xúc phát sườn dương có đầu vào D là đầu ra của 1 cổng NAND 2 đầu vào.

Copyright (c) 10/2006 by NPB 138

Page 139: ThietkeIC_Baigiang.v1.2

Ví dụ 2 (tiếp)

1 ---------------------------------------

2 ENTITY example IS

3 PORT ( a, b, clk: IN BIT;

4 q:OUT BIT);

5 END example;

6 ---------------------------------------

7 ARCHITECTURE example OF example IS

8 SIGNAL temp : BIT;

9 BEGIN

10 temp <= a NAND b;

11 PROCESS (clk)

12 BEGIN

13 IF (clk'EVENT AND clk='1') THEN q<=temp;

14 END IF;

15 END PROCESS;

16 END example;

17 ---------------------------------------

18 -- Có thể thay dòng 8 và 10 bằng q <= a NAND b ở dòng 13

Copyright (c) 10/2006 by NPB 139

Page 140: ThietkeIC_Baigiang.v1.2

140 http://dce.hust.edu.vn

Page 141: ThietkeIC_Baigiang.v1.2

Nội dung chương 3

3.1. Khái niệm chung về tín hiệu

3.2. Phân loại tín hiệu

3.3. Khai báo tín hiệu và phạm vi sử dụng

Page 142: ThietkeIC_Baigiang.v1.2

3.1. Khái niệm chung về tín hiệu

Truyền thông là quá trình truyền thông tin từ đầu phát đến đầu thu

Có nhiều phương thức để truyền thông tin nhưng đều có một thành phần chung là

tín hiệu (Signal)

Page 143: ThietkeIC_Baigiang.v1.2

Ví dụ tín hiệu

Page 144: ThietkeIC_Baigiang.v1.2

Tín hiệu (Signal)

Tín hiệu trong các thiết bị điện tử là tín hiệu điện

Page 145: ThietkeIC_Baigiang.v1.2

Tín hiệu (Signal)

Tầm quan trọng của tín hiệu điện (electrical signal)

Tín hiệu điện đóng vai trò rất quan trọng trong hoạt động của các thiết bị điện tử

-> VHDL: tín hiệu đóng vai trò rất quan trọng trong việc mô tả quá trình trao đổi dữ liệu giữa các mạch, các khối chức năng với nhau

Page 146: ThietkeIC_Baigiang.v1.2

3.2. Phân loại tín hiệu

Phân loại theo số đường tín hiệu Đơn tín hiệu (single signal)

Đa tín hiệu (multiple signal)

Phân loại theo chức năng của tín hiệu Tín hiệu ghép nối với bên ngoài (External signal)

Tín hiệu bên trong thiết bị (Internal signal)

Page 147: ThietkeIC_Baigiang.v1.2

Đơn tín hiệu & Đa tín hiệu

Đơn tín hiệu: một đường kết nối -> bit

Đa tín hiệu (bus, vector): nhiều đường kết nối -> bit_vector

Page 148: ThietkeIC_Baigiang.v1.2

Độ rộng bus và trật tự các bit

bit_vector(0 to 7) bit_vector(7 downto 0)

Page 149: ThietkeIC_Baigiang.v1.2

Tín hiệu trong & ngoài

Tín hiệu ngoài (External Signal): kết nối hệ thống với thế giới bên ngoài

Tín hiệu trong (Internal Signal): kết nối các thành phần bên trong hệ thống

Page 150: ThietkeIC_Baigiang.v1.2

Tín hiệu trong & ngoài

External Signals: DATA, RESULT, EXTBUS, a, b,c…

Internal Signals: x, y, INTBUS

Page 151: ThietkeIC_Baigiang.v1.2

3.3. Khai báo tín hiệu

ENTITY

ARCHITECTURE

External Signals

Internal Signals

Vị trí khai báo

Page 152: ThietkeIC_Baigiang.v1.2

Khai báo External Signals

Port_name: Mode Port_Type

Page 153: ThietkeIC_Baigiang.v1.2

Khai báo Internal Signals

Signal_name: Signal_Type

Page 154: ThietkeIC_Baigiang.v1.2

Phạm vi sử dụng

Các tín hiệu khai báo trong một package có thể sử dụng trong tất cả các đối tượng sử dụng package đó

Các tín hiệu của interface (external signals) có thể sử dụng trong tất cả các architecture của interface đó

Các tín hiệu khai báo bên trong một architecture thì chỉ có thể sử dụng trong architecture đó

Page 155: ThietkeIC_Baigiang.v1.2

Ví dụ

MUX5-1

Page 156: ThietkeIC_Baigiang.v1.2

Ví dụ

entity mux5_1 is

port(u, v, w, x, y: IN std_logic_vector(2 downto 0);

s: IN std_logic_vector(2 downto 0);

m: OUT std_logic_vector(2 downto 0));

end mux5_1;

architecture structure1 of mux5_1 is

signal out1, out2, out3: std_logic_vector(2 downto 0);

begin

--Khai bao va noi chan cac component voi nhau

mux21_1: entity work.mux2_1(behavior)

port map(u, v, out1, s(0));

mux21_2: entity work.mux2_1(behavior)

port map(w, x, out2, s(0));

mux21_3: entity work.mux2_1(behavior)

port map(out1, out2, out3, s(1));

mux21_4: entity work.mux2_1(behavior)

port map(out3, Y, m, s(2));

end structure1;

Page 157: ThietkeIC_Baigiang.v1.2

157 http://dce.hust.edu.vn

Page 158: ThietkeIC_Baigiang.v1.2

Nội dung chương 4

4.1. Khai báo thực thể (entity)

4.2. Khai báo cổng (ports)

4.3. Khai báo thuộc tính, thông số(generic)

158 Copyright (c) 10/2006 by NPB

Page 159: ThietkeIC_Baigiang.v1.2

4.1. Khai báo thực thể (entity)

Nên khai báo tên gợi nhớ

VHDL không phân biệt chữ hoa, thường

Đặt tên của thực thể phải tuân theo các quy tắc: Khai báo trên một dòng duy nhất

Phải bắt đầu bằng chữ cái

Chỉ có thể bao gồm chữ cái, chữ số và dấu gạch dưới

Dấu gạch dưới (underscores) không được sử dụng ở đầu, ở cuối hoặc sử dụng hai dấu liên tiếp nhau

Không cho phép sử dụng khoảng trắng

Không được sử dụng các từ khóa

159 Copyright (c) 10/2006 by NPB

Page 160: ThietkeIC_Baigiang.v1.2

Kết thúc khai báo thực thể

Sử dụng câu lệnh end Cách 1: end entity;

Cách 2: end entity_name; (end ExampleEnt;)

Cách 3: end entity entity_name; -> Nên dùng

Cách 4: end; -> Không nên dùng

Copyright (c) 10/2006 by NPB 160

Page 161: ThietkeIC_Baigiang.v1.2

Chú thích trong VHDL

Bắt đầu bằng hai dấu gạch ngang “- -”

Kết thúc ở cuối dòng

Copyright (c) 10/2006 by NPB 161

Page 162: ThietkeIC_Baigiang.v1.2

4.2. Khai báo cổng (ports)

Mỗi cổng được khai báo sử dụng từ khóa port và các thành phần sau:

Từ khóa signal (optional)

Tên cổng, theo sau là dấu hai chấm “:”

Chế độ hoạt động của cổng (IN, OUT, INOUT…)

Loại cổng (Kiểu dữ liệu)

Khởi tạo giá trị cho cổng (optional)

Copyright (c) 10/2006 by NPB 162

Page 163: ThietkeIC_Baigiang.v1.2

Ví dụ khai báo cổng (ports)

Copyright (c) 10/2006 by NPB 163

Page 164: ThietkeIC_Baigiang.v1.2

Chế độ hoạt động của cổng (Port mode)

Chế độ hoạt động của cổng (Port mode) xác định chiều dữ liệu trên cổng đó

Các chế độ cổng thường sử dụng In: chế độ vào, cho phép đọc tín hiệu

Out: chế độ ra, cho phép xuất tín hiệu

Inout: chế độ hai chiều, cả vào và ra

Copyright (c) 10/2006 by NPB 164

Page 165: ThietkeIC_Baigiang.v1.2

4.3. Khai báo generic

Phải khai báo trong khai báo thực thể (entity)

Là hằng số, được sử dụng để mô tả một thông số của hệ thống

Kích thước của hệ thống (độ rộng bus, …)

Tần số hoạt động

Khai báo generic: name: type :=value; Tên của thông số, theo sau là dấu hai chấm “:”

Kiểu dữ liệu

Giá trị mặc định (optional)

Copyright (c) 10/2006 by NPB 165

Page 166: ThietkeIC_Baigiang.v1.2

Ví dụ khai báo generic

Copyright (c) 10/2006 by NPB 166

Page 167: ThietkeIC_Baigiang.v1.2

167 http://dce.hust.edu.vn

Page 168: ThietkeIC_Baigiang.v1.2

Nội dung chương 3

3.1. Các kiểu dữ liệu có sẵn

3.2. Các kiểu dữ liệu do người dùng định nghĩa

3.3. Các kiểu dữ liệu dẫn xuất

3.4. Kiểu dữ liệu mảng

3.5. Kiểu dữ liệu bản ghi

3.6. Các kiểu dữ liệu có dấu và không dấu

3.7. Chuyển đổi kiểu dữ liệu

3.8. Các ví dụ

Copyright (c) 10/2006 by NPB 168

Page 169: ThietkeIC_Baigiang.v1.2

Các kiểu dữ liệu của VHDL

VHDL cung cấp: Một số kiểu dữ liệu cơ sở (kiểu dữ liệu vô hướng – scalar)

Cách tạo nên các kiểu dữ liệu tổng hợp (composite)

Các kiểu dữ liệu vô hướng: Các kiểu số, các đại lượng vật lý, các kiểu liệt kê

Có rất nhiều kiểu dữ liệu cơ sở chuẩn đã được định nghĩa trước.

Ví dụ: enumeration, integer, physical(*), floating point(*). (*) = không tổng hợp được.

Các kiểu dữ liệu tổng hợp: Kiểu mảng (array)

Kiểu bản ghi (record)

Ngoài ra VHDL còn cung cấp cả kiểu access (pointer) và kiểu file (ta không nghiên cứu).

Copyright (c) 10/2006 by NPB 169

Page 170: ThietkeIC_Baigiang.v1.2

• Cú pháp type type_name is type_definition; Trong đó type_definition có thể thuộc kiểu scalar, composite, access, file.

Ví dụ: type Sreg0_type is (S1, S2, S3, S4); type small is range 0 to 23;

170 http://dce.hust.edu.vn

Page 171: ThietkeIC_Baigiang.v1.2

5.1. Các kiểu dữ liệu có sẵn

Gói standard của thư viện std: kiểu BIT, BOOLEAN, INTEGER và REAL

Gói std_logic_1164 của thư viện ieee: kiểu STD_LOGIC và STD_ULOGIC

Gói std_logic_arith của thư viện ieee: định nghĩa kiểu SIGNED và UNSIGNED, cộng thêm nhiều hàm chuyển đổi dữ liệu, VD: conv_integer(p), conv_unsigned(p, b), conv_signed(p, b), conv_std_logic_vector(p, b) …

Gói std_logic_signed và std_logic_unsigned của thư viện ieee: chứa các hàm cho phép họat động với dữ liệu STD_LOGIC_VECTOR được thực hiện khi mà kiểu dữ liệu là SIGNED hoặc UNSIGNED

Copyright (c) 10/2006 by NPB 171

Page 172: ThietkeIC_Baigiang.v1.2

Kiểu BIT và BIT_VECTOR

Kiểu BIT và BIT_VECTOR: 2 mức logic '0' và '1'

Ví dụ: SIGNAL x: BIT;

-- x được khai báo như một tín hiệu số kiểu BIT

SIGNAL y: BIT_VECTOR (3 DOWNTO 0);

-- y là một vector 4 bit, với bit trái nhất là MSB

SIGNAL w: BIT_VECTOR (0 TO 7);

-- w là một vector 8 bit, với bit phải nhất là MSB

Các phép gán tín hiệu (dùng toán tử <= ) sau là hợp lệ: x <= '1';

-- ' ' dùng cho 1 bit còn " " dùng cho vector

y <= "0111";

-- y là tín hiệu 4 bit có giá trị là "0111" (MSB = '0')

w <= "01110001";

-- w là tín hiệu 8 bit có giá trị là "01110001" (MSB = '1')

Copyright (c) 10/2006 by NPB 172

Page 173: ThietkeIC_Baigiang.v1.2

Kiểu STD_LOGIC

Kiểu STD_LOGIC và STD_LOGIC_VECTOR gồm 8 giá trị sau:

'X' : không xác định

'0' : mức thấp

'1' : mức cao

'Z' : trở kháng cao

'W' : không xác định yếu

'L' : mức thấp (yếu)

'H' : mức cao (yếu)

Copyright (c) 10/2006 by NPB 173

Page 174: ThietkeIC_Baigiang.v1.2

Kiểu STD_ULOGIC

Hệ thống logic 9 mức được giới thiệu trong chuẩn IEEE 1164 („U‟, „X‟, „0‟, „1‟, „Z‟, „W‟, „L‟, „H‟, „–‟)

STD_LOGIC là subtype của STD_ULOGIC (có thêm giá trị logic 'U' – Unresolved)

Copyright (c) 10/2006 by NPB 174

Page 175: ThietkeIC_Baigiang.v1.2

Các kiểu dữ liệu có sẵn (tiếp)

Kiểu BOOLEAN: True và False

Kiểu INTEGER: số nguyên 32 bit (từ -2.147.483.647 đến +2.147.483.647)

Kiểu NATURAL: số tự nhiên (từ 0 đến +2.147.483.647)

Kiểu REAL: số thực (từ -1.0E38 đến +1.0E38)

Copyright (c) 10/2006 by NPB 175

Page 176: ThietkeIC_Baigiang.v1.2

Các kiểu dữ liệu có sẵn (tiếp)

Kiểu dữ liệu vật lý: Biểu thị một đại lượng vật lý nào đó, chẳng hạn như là khối lượng, độ dài, thời gian hoặc điện áp.

Cú pháp khai báo một kiểu dữ liệu vật lý như sau: physical_type_definition ::= range_constraint

units

base_unit_declaration

{ secondary_unit_declaration }

end units

base_unit_declaration ::= identifier ;

secondary_unit_declaration ::= identifier =

physical_literal ;

physical_literal ::= [ abstract_literal ]

unit_name

Copyright (c) 10/2006 by NPB 176

Page 177: ThietkeIC_Baigiang.v1.2

177 Copyright (c) 10/2006 by NPB

type CAPACITY is range 0 to 1E8

units

pF; -- picofarad

nF = 1000 pF; -- nanofarad

uF = 1000 nF; -- microfarad

mF = 1000 uF; -- milifarad

F = 1000 mF; -- farad

end units CAPACITY;

type DISTANCE is range 0 to 1E5

units

um; -- micrometer

mm = 1000 um; -- millimeter

in_a = 25400 um; -- inch

end units DISTANCE;

variable Dis1, Dis2 : DISTANCE;

Dis1 := 28 mm;

Dis2 := 2 in_a - 1 mm;

if Dis1 < Dis2 then ...

variable SomeVar : CAPACITY;

SomeVar := 1mF + 23pF;

Kiểu vật l lý không thể tổng hợp lên mạch cứng được.

Page 178: ThietkeIC_Baigiang.v1.2

Copyright (c) 10/2006 by NPB 178

Các kí tự được biểu diễn ở trong cặp dấu nháy đơn, ví dụ: 'A' '*' ''' ' '

Nội dung của một xâu kí tự được biểu diễn trong cặp dấu nháy kép, ví dụ:

"A string"

"" – xâu rỗng

"A string in a string: ""A string"". " – xâu có chứa ký tự "

Page 179: ThietkeIC_Baigiang.v1.2

179 Copyright (c) 10/2006 by NPB

x0 <= '0';

• -- bit, std_logic, or

std_ulogic value '0'

x1 <= "00011111";

• bit_vector,

std_logic_vector,

std_ulogic_vector, signed,

or unsigned

x3 <= "101111";

• -- Biểu diễn dạng nhị phân

x4 <= B"101111";

• Biểu diễn dạng nhị phân

x5 <= O"57";

• Số 57 theo hệ cơ số 8.

x6 <= X"2F";

•Số 2F theo hệ cơ số

16.

n <= 1200;

•Số nguyên.

m <= 1_200;

•Số nguyên, được phép

có dấu gạch dưới

y <= 1.2E-5;

•Số thực

q <= d after 10 ns;

•physical

Page 180: ThietkeIC_Baigiang.v1.2

Copyright (c) 10/2006 by NPB 180

SIGNAL a: BIT;

SIGNAL b: BIT_VECTOR(7 DOWNTO 0);

SIGNAL c: STD_LOGIC;

SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0);

SIGNAL e: INTEGER RANGE 0 TO 255;

a <= b(5);

• Hợp lệ (cùng kiểu BIT)

b(0) <= a;

• Hợp lệ (cùng kiểu BIT)

c <= d(5);

• Hợp lệ (cùng kiểu STD_LOGIC)

d(0) <= c;

• Hợp lệ (cùng kiểu STD_LOGIC)

a <= c;

•Không hợp lệ (khác kiểu BIT &

STD_LOGIC)

b <= d;

•Không hợp lệ (khác kiểu BIT_VECTOR

& STD_LOGIC_VECTOR)

e <= b;

•Không hợp lệ (khác kiểu INTEGER &

BIT_VECTOR)

e <= d;

•Không hợp lệ (khác kiểu INTEGER &

STD_LOGIC_VECTOR)

Page 181: ThietkeIC_Baigiang.v1.2

5.2. Các kiểu dữ liệu người dùng đn

Có 2 dạng dữ liệu người dùng có thể định nghĩa: integer (kiểu số nguyên)

enumerated (kiểu liệt kê)

Copyright (c) 10/2006 by NPB 181

Page 182: ThietkeIC_Baigiang.v1.2

Kiểu số nguyên do NSD định nghĩa

Cú pháp: integer_type_definition ::= range_constraint

range_constraint ::= range range

range ::= simple_expression direction

simple_expression

direction ::= to | downto

Ví dụ: type byte_int is range 0 to 255;

type signed_word_int is range –32768 to 32767;

type bit_index is range 31 downto 0;

type my_integer is range -32 to 32;

type student_grade is range 0 to 100;

Copyright (c) 10/2006 by NPB 182

Page 183: ThietkeIC_Baigiang.v1.2

Kiểu liệt kê do NSD định nghĩa

Cú pháp: enumeration_type_definition ::= ( enumeration_literal

{ , enumeration_literal } )

enumeration_literal ::= identifier | character_literal

Ví dụ: type logic_level is (unknown, low, undriven, high);

type alu_function is (disable, pass, add, subtract,

multiply, divide);

type octal_digit is ('0', '1', '2', '3', '4', '5',

'6', '7');

Copyright (c) 10/2006 by NPB 183

Page 184: ThietkeIC_Baigiang.v1.2

Kiểu dữ liệu liệt kê (tiếp)

Kiểu character: chứa cả tên và ký tự type character is (

NUL, SOH, STX, ETX, EOT, ENQ, ACK, BEL,

BS, HT, LF, VT, FF, CR, SO, SI,

DLE, DC1, DC2, DC3, DC4, NAK, SYN, ETB,

CAN, EM, SUB, ESC, FSP, GSP, RSP, USP,

' ', '!', '"', '#', '$', '%', '&', ''',

'(', ')', '*', '+', ',', '-', '.', '/',

'0', '1', '2', '3', '4', '5', '6', '7',

'8', '9', ':', ';', '<', '=', '>', '?',

'@', 'A', 'B', 'C', 'D', 'E', 'F', 'G',

'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',

'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W',

'X', 'Y', 'Z', '[', '\', ']', '^', '_',

'`', 'a', 'b', 'c', 'd', 'e', 'f', 'g',

'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',

'p', 'q', 'r', 's', 't', 'u', 'v', 'w',

'x', 'y', 'z', '{', '|', '}', '~', DEL);

Copyright (c) 10/2006 by NPB 184

Page 185: ThietkeIC_Baigiang.v1.2

5.3. Các kiểu dữ liệu dẫn xuất

VD 1: các kiểu Subtype được dẫn xuất từ các kiểu dữ liệu ở các phần trước

SUBTYPE natural IS INTEGER RANGE 0 TO INTEGER'HIGH;

SUBTYPE my_logic IS STD_LOGIC RANGE '0' TO 'Z';

-- Có STD_LOGIC = ('X','0','1','Z','W','L','H','-')

-- Suy ra my_logic = ('0','1','Z')

SUBTYPE small_integer IS INTEGER RANGE -32 TO 32;

Copyright (c) 10/2006 by NPB 185

Page 186: ThietkeIC_Baigiang.v1.2

Các kiểu dữ liệu dẫn xuất (tiếp)

VD 2: Các phép gán giữa Types và Subtypes SUBTYPE my_logic IS STD_LOGIC RANGE '0' TO '1';

SIGNAL a: BIT;

SIGNAL b: STD_LOGIC;

SIGNAL c: my_logic;

...

b <= a; --khong hop le ( BIT vs STD_LOGIC)

b <= c; --hop le (cung kieu STD_LOGIC)

c <= b; --hop le (cung kieu STD_LOGIC)

Copyright (c) 10/2006 by NPB 186

Page 187: ThietkeIC_Baigiang.v1.2

5.4. Kiểu dữ liệu mảng

Mảng (Array) là tập hợp các phần tử có cùng kiểu.

Mảng có thể là mảng 1 chiều (1D), 2 chiều (2D) hoặc là mảng 1 chiều của mảng 1 chiều (1Dx1D)

Copyright (c) 10/2006 by NPB 187

Page 188: ThietkeIC_Baigiang.v1.2

Kiểu mảng (tiếp)

Định nghĩa mảng: TYPE type_name IS ARRAY (specification) OF data_type;

Sử dụng mảng: SIGNAL signal_name: type_name [:= initial_value];

SIGNAL cũng có thể là CONSTANT hoặc VARIABLE

Ứng dụng: để mô hình các cấu trúc tuyến tính như RAM, ROM, etc.

Copyright (c) 10/2006 by NPB 188

Page 189: ThietkeIC_Baigiang.v1.2

Ví dụ về khai báo mảng

Mảng 1Dx1D: TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;

TYPE matrix IS ARRAY (0 TO 3) OF row;

SIGNAL x: matrix;

TYPE matrix IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO

0);

Mảng 2D: TYPE matrix2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;

Khởi tạo mảng: ... :="0001"; -- mảng 1D

... :=('0','0','0','1') -- mảng 1D

... :=(('0','1','1','1'), ('1','1','1','0')); -- 1Dx1D / 2D

Copyright (c) 10/2006 by NPB 189

Page 190: ThietkeIC_Baigiang.v1.2

Ví dụ về sử dụng mảng

TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;

TYPE array1 IS ARRAY (0 TO 3) OF row;

TYPE array2 IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO 0);

TYPE array3 IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;

SIGNAL x: row;

SIGNAL y: array1;

SIGNAL v: array2;

SIGNAL w: array3;

x(0) <= y(1)(2); x(1) <= v(2)(3); x(2) <= w(2,1);

y(1)(1) <= x(6); y(2)(0) <= v(0)(0); y(0)(0) <= w(3,3);

w(1,1) <= x(7); w(3,0) <= v(0)(3);

x <= y(0); x <= v(1); x <= w(2); x <= w(2,2 DOWNTO 0);

v(0) <= w(2,2 DOWNTO 0); v(0) <= w(2);

y(1) <= v(3);

y(1)(7 DOWNTO 3) <= x(4 DOWNTO 0);

v(1)(7 DOWNTO 3) <= v(2)(4 DOWNTO 0);

w(1,5 DOWNTO 1) <= v(2)(4 DOWNTO 0);

-- Lệnh tô đậm là các phép gán sai

Copyright (c) 10/2006 by NPB 190

Page 191: ThietkeIC_Baigiang.v1.2

Ví dụ về gán mảng

Giả sử có một mảng được khai báo là: type a is array (1 to 4) of character;

Để gán giá trị cho các phần tử của mảng theo thứ tự 'f', 'o', 'o', 'd' ta có thể dùng cách viết như sau:

a := ('f', 'o', 'o', 'd');

a := (1 => 'f', 3 => 'o', 4 => 'd', 2 => 'o');

a := ('f', 4 => 'd', others => 'o');

Copyright (c) 10/2006 by NPB 191

Page 192: ThietkeIC_Baigiang.v1.2

Ví dụ về mảng các cổng vào-ra

Không có kiểu dữ liệu có sẵn nhiều chiều

Một cách mô tả các chân vào-ra của mạch trong khai báo ENTITY là dùng mảng các vector

Không được phép dùng TYPE trong khai báo ENTITY.

=> Định nghĩa kiểu dữ liệu mới trong 1 PACKAGE

Copyright (c) 10/2006 by NPB 192

Page 193: ThietkeIC_Baigiang.v1.2

Ví dụ mảng các cổng (tiếp)

------- Package: ---------------------------

LIBRARY ieee;

USE ieee.std_logic_1164.all;

PACKAGE my_data_types IS

CONSTANT b: INTEGER := 7;

TYPE vector_array IS ARRAY (NATURAL RANGE <>) OF

STD_LOGIC_VECTOR(b DOWNTO 0);

END my_data_types;

------- Main code: -------------------------

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE work.my_data_types.all; -- user-defined package

---------------------------

ENTITY mux IS

PORT (inp: IN VECTOR_ARRAY (0 TO 3);

... );

END mux;

... ;

-------------------------------------------- Copyright (c) 10/2006 by NPB 193

Page 194: ThietkeIC_Baigiang.v1.2

5.5. Kiểu dữ liệu bản ghi

Bản ghi (Record) là kiểu dữ liệu gồm các phần tử có kiểu khác nhau nhưng có liên kết với nhau.

Cú pháp khai báo kiểu bản ghi: record_type_definition ::=

record

element_declaration

{ element_declaration }

end record

element_declaration ::= identifier_list :

element_subtype_definition ;

identifier_list ::= identifier { , identifier )

element_subtype_definition ::= subtype_indication

Ứng dụng: để mô hình các gói dữ liệu.

Copyright (c) 10/2006 by NPB 194

Page 195: ThietkeIC_Baigiang.v1.2

Ví dụ về kiểu bản ghi

Ví dụ 1: TYPE birthday IS RECORD

day: INTEGER RANGE 1 TO 31;

month: month_name;

END RECORD;

Ví dụ 2: type instruction is

record

op_code : processor_op;

address_mode : mode;

operand1, operand2: integer range 0 to 15;

end record;

Để truy cập vào trường f của bản ghi r, ta sử dụng cách viết r.f

Copyright (c) 10/2006 by NPB 195

Page 196: ThietkeIC_Baigiang.v1.2

5.6. Kiểu dữ liệu có dấu và không dấu

Các kiểu SIGNED và UNSIGNED được định nghĩa trong gói std_logic_arith của thư viện ieee.

Ví dụ: SIGNAL x: SIGNED (7 DOWNTO 0);

SIGNAL y: UNSIGNED (0 TO 3);

UNSIGNED: "0101" biểu diễn số 5, "1101" biểu diễn số

13

SIGNED: "0101" biểu diễn số 5, "1101" biểu diễn số -3

Dùng với các phép toán số học, không dùng được với các phép toán logic.

Copyright (c) 10/2006 by NPB 196

Page 197: ThietkeIC_Baigiang.v1.2

Ví dụ 1

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

...

SIGNAL a: IN SIGNED (7 DOWNTO 0);

SIGNAL b: IN SIGNED (7 DOWNTO 0);

SIGNAL x: OUT SIGNED (7 DOWNTO 0);

...

v <= a + b;

w <= a AND b;

Copyright (c) 10/2006 by NPB 197

Page 198: ThietkeIC_Baigiang.v1.2

Ví dụ 2

LIBRARY ieee;

USE ieee.std_logic_1164.all;

...

SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);

SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);

SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);

...

v <= a + b;

w <= a AND b;

Copyright (c) 10/2006 by NPB 198

Page 199: ThietkeIC_Baigiang.v1.2

Ví dụ 3

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_unsigned.all;

...

SIGNAL a: IN STD_LOGIC_VECTOR (7 DOWNTO 0);

SIGNAL b: IN STD_LOGIC_VECTOR (7 DOWNTO 0);

SIGNAL x: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);

...

v <= a + b;

w <= a AND b;

Copyright (c) 10/2006 by NPB 199

Page 200: ThietkeIC_Baigiang.v1.2

5.7. Chuyển đổi kiểu dữ liệu

VHDL không cho phép các phép toán trực tiếp ( số học, logic, …) tác động lên các dữ liệu khác kiểu nhau.

Gói std_logic_1164 của thư viện ieee cung cấp các hàm chuyển đổi kiểu dữ liệu.

Copyright (c) 10/2006 by NPB 200

Page 201: ThietkeIC_Baigiang.v1.2

Các hàm chuyển đổi

conv_integer(p): chuyển đổi p thuộc kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá trị INTEGER.

conv_unsigned(p, b): chuyển đổi p thuộc kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá trị UNSIGNED với kích thước là b bit.

conv_signed(p, b): chuyển đổi p của kiểu INTEGER, UNSIGNED, SIGNED, hoặc STD_ULOGIC thành một giá trị SIGNED với kích thước là b bit.

conv_std_logic_vector(p, b): chuyển đổi p thuộc kiểu dữ liệu INTEGER, UNSIGNED, SIGNED, hoặc STD_LOGIC thành một giá trị STD_LOGIC_VECTOR với kích thước b bit.

Copyright (c) 10/2006 by NPB 201

Page 202: ThietkeIC_Baigiang.v1.2

Ví dụ 1

TYPE long IS INTEGER RANGE -100 TO 100;

TYPE short IS INTEGER RANGE -10 TO 10;

SIGNAL x : short;

SIGNAL y : long;

...

y <= 2*x + 5;

y <= long(2*x + 5);

Copyright (c) 10/2006 by NPB 202

Page 203: ThietkeIC_Baigiang.v1.2

Ví dụ 2

LIBRARY ieee;

USE ieee.std_logic_1164.all;

USE ieee.std_logic_arith.all;

...

SIGNAL a: IN UNSIGNED (7 DOWNTO 0);

SIGNAL b: IN UNSIGNED (7 DOWNTO 0);

SIGNAL y: OUT STD_LOGIC_VECTOR (7 DOWNTO 0);

...

y <= CONV_STD_LOGIC_VECTOR ((a+b), 8);

Phép toán hợp lệ: a+b được chuyển đổi từ UNSIGNED thành một giá trị 8-bit STD_LOGIC_VECTOR, sau đó gán cho y.

Copyright (c) 10/2006 by NPB 203

Page 204: ThietkeIC_Baigiang.v1.2

5.8. Các ví dụ

Ví dụ 1: cho các khai báo sau TYPE byte IS ARRAY (7 DOWNTO 0) OF STD_LOGIC;

TYPE mem1 IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC;

TYPE mem2 IS ARRAY (0 TO 3) OF byte;

TYPE mem3 IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(0 TO 7);

SIGNAL a: STD_LOGIC;

SIGNAL b: BIT;

SIGNAL x: byte;

SIGNAL y: STD_LOGIC_VECTOR (7 DOWNTO 0);

SIGNAL v: BIT_VECTOR (3 DOWNTO 0);

SIGNAL z: STD_LOGIC_VECTOR (x'HIGH DOWNTO 0);

SIGNAL w1: mem1;

SIGNAL w2: mem2;

SIGNAL w3: mem3;

Copyright (c) 10/2006 by NPB 204

Page 205: ThietkeIC_Baigiang.v1.2

Ví dụ 1 (tiếp)

Xét tính hợp lệ của các phép gán sau: x(2) <= a;

y(0) <= x(0);

z(7) <= x(5);

b <= v(3);

w1(0,0) <= x(3);

w1(2,5) <= y(7);

w2(0)(0) <= x(2);

w2(2)(5) <= y(7);

w1(2,5) <= w2(3)(7);

b <= a;

w1(0)(2) <= x(2);

w2(2,0) <= a;

Copyright (c) 10/2006 by NPB 205

Page 206: ThietkeIC_Baigiang.v1.2

Ví dụ 1 (tiếp)

Xét tính hợp lệ của các phép gán sau: x <= "11111110";

x <= (OTHERS => '1');

x <= y;

y <= ('1','1','1','1','1','1','0','Z');

y <= (7 =>'0', 1 =>'0', OTHERS => '1');

y(2 DOWNTO 0) <= z(6 DOWNTO 4);

y(5 TO 7) <= z(6 DOWNTO 0);

z <= "11111" & "000";

z <= y;

z <= w3(1);

z(5 DOWNTO 0) <= w3(1)(2 TO 7);

Copyright (c) 10/2006 by NPB 206

Page 207: ThietkeIC_Baigiang.v1.2

Ví dụ 1 (tiếp)

Xét tính hợp lệ của các phép gán sau: w1 <= ((OTHERS=>'Z'), "11110000" ,"11110000",

(OTHERS=>'0'));

w1 <= (OTHERS => '1');

w1(0, 7 DOWNTO 0) <="11111111";

w2 <= (OTHERS => 'Z');

w2(0, 7 DOWNTO 0) <= "11110000";

w2(0)(7 DOWNTO 0) <= "11110000";

w2 <= ((OTHERS=>'0'), (OTHERS=>'0'), (OTHERS=>'0'), (OTHERS=>'0'));

w3(2) <= y;

w3(1) <= "00000000";

w3(1) <= (OTHERS => '0');

w3 <= ("11111100", ('0','0','0','0','Z','Z','Z','Z',), (OTHERS=>'0'), (OTHERS=>'0'));

Copyright (c) 10/2006 by NPB 207

Page 208: ThietkeIC_Baigiang.v1.2

Ví dụ 2

Copyright (c) 10/2006 by NPB 208

Page 209: ThietkeIC_Baigiang.v1.2

Ví dụ 2 (tiếp)

Copyright (c) 10/2006 by NPB 209

Page 210: ThietkeIC_Baigiang.v1.2

210 Copyright (c) 10/2006 by NPB

Page 211: ThietkeIC_Baigiang.v1.2

Nội dung chương 6

6.1. Các toán tử

6.2. Các thuộc tính

6.3. Các thuộc tính do người dùng định nghĩa

6.4. Chồng toán tử

6.5. GENERIC

Copyright (c) 10/2006 by NPB 211

Page 212: ThietkeIC_Baigiang.v1.2

6.1. Toán tử

VHDL cung cấp một số loại toán tử sau: Toán tử gán

Toán tử logic

Toán tử số học

Toán tử so sánh

Toán tử dịch

Copyright (c) 10/2006 by NPB 212

Page 213: ThietkeIC_Baigiang.v1.2

Các toán tử gán

<= dùng gán giá trị cho SIGNAL

:= dùng gán giá trị cho VARIABLE, CONSTANT, GENERIC

=> dùng gán giá trị cho từng phần tử của kiểu vector hoặc dùng với từ khóa OTHERS

Copyright (c) 10/2006 by NPB 213

Page 214: ThietkeIC_Baigiang.v1.2

VD về toán tử gán

SIGNAL x : STD_LOGIC;

VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0);

SIGNAL w : STD_LOGIC_VECTOR(0 TO 7);

x <= '1';

y := "0000";

w <= "10000000";

w <= (0 =>'1', OTHERS =>'0');

Copyright (c) 10/2006 by NPB 214

Page 215: ThietkeIC_Baigiang.v1.2

Các toán tử logic

VHDL định nghĩa các toán tử logic sau: NOT, AND, OR, NAND, NOR, XOR, XNOR

Dữ liệu cho các toán tử này phải là kiểu: BIT, STD_LOGIC, STD_ULOGIC, BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR.

Ví dụ: y <= NOT (a AND b);

y <= a NAND b;

Copyright (c) 10/2006 by NPB 215

Page 216: ThietkeIC_Baigiang.v1.2

Các toán tử số học

Dùng cho các kiểu dữ liệu số như là:INTEGER, SIGNED, UNSIGNED, REAL.

Bao gồm: + Toán tử cộng

- Toán tử trừ

* Toán tử nhân

/ Toán tử chia

** Toán tử lấy mũ

MOD Phép chia lấy phần nguyên (Y MOD X có dấu của X)

REM Phép chia lấy phần dư (Y REM X có dấu của Y)

ABS Phép lấy giá trị tuyệt đối

Copyright (c) 10/2006 by NPB 216

Page 217: ThietkeIC_Baigiang.v1.2

Toán tử so sánh

Có các toán tử so sánh sau: = So sánh bằng

/= So sánh khác nhau

< So sánh nhỏ hơn

> So sánh lớn hơn

<= So sánh nhỏ hơn hoặc bằng

>= So sánh lớn hơn hoặc bằng

Chỉ tác động lên 2 toán hạng có cùng kiểu

Kết quả là một giá trị Boolean

Các toán hạng ứng với phép so sánh bằng và khác (= và /=) có thể có kiểu bất kì. Với các kiểu có cấu trúc, 2 giá trị được coi là bằng nhau nếu tất cả các thành phần tương ứng của chúng là như nhau.

Các toán tử so sánh còn lại phải có toán hạng là kiểu vô hướng hoặc kiểu mảng 1 chiều của các kiểu rời rạc.

Copyright (c) 10/2006 by NPB 217

Page 218: ThietkeIC_Baigiang.v1.2

Toán tử dịch

Cú pháp sử dụng toán tử dịch là:

<left operand> <shift operation> <right operand>

Trong đó: <left operand> : kiểu là BIT_VECTOR

<right operand> : kiểu là INTEGER

Có hai toán tử dịch: Sll Toán tử dịch trái

Rll Toán tử dịch phải

Ví dụ: signal x: bit_vector(bus_width-1 downto 0); x<= x sll 2;

Copyright (c) 10/2006 by NPB 218

Page 219: ThietkeIC_Baigiang.v1.2

Toán tử ghép nối

Toán tử ghép nối (&) tác động lên các mảng 1 chiều để cho ra một mảng mới với nội dung của toán hạng bên phải được ghép nối theo sau nội dung của toán hạng bên trái.

Nó cũng được sử dụng để thêm 1 phần tử vào mảng hoặc hình thành 1 mảng từ 2 phần tử.

Toán tử này thường được sử dụng với kiểu xâu kí tự.

Copyright (c) 10/2006 by NPB 219

Page 220: ThietkeIC_Baigiang.v1.2

Thứ tự ưu tiên của các toán tử

Thự tự ưu tiên giảm dần từ trên xuống: ** abs not

* / mod rem

+ (sign) – (sign)

+ – &

= /= < <= > >=

and or nand nor xor

Copyright (c) 10/2006 by NPB 220

Page 221: ThietkeIC_Baigiang.v1.2

6.2. Các thuộc tính

Thuộc tính dữ liệu: d‟LOW Trả về giá trị nhỏ nhất của chỉ số mảng

d‟HIGH Trả về chỉ số lớn nhất của chỉ số mảng

d‟LEFT Trả về chỉ số bên trái nhất của mảng

d‟RIGHT Trả về chỉ số bên phải nhất của mảng

d‟LENGTH Trả về kích thước của vector

d‟RANGE Trả về khoảng chỉ số của vector

d‟REVERSE_RANGE Trả về khoảng chỉ số của vector theo thứ tự đảo ngược

Copyright (c) 10/2006 by NPB 221

Page 222: ThietkeIC_Baigiang.v1.2

Ví dụ

Giả sử d là một vector được khai báo như sau: SIGNAL d : STD_LOGIC_VECTOR(0 TO 7)

Ta sẽ có: d'LOW = 0, d'HIGH = 7, d'LEFT = 0, d'RIGHT = 7, d'LENGTH = 8,

d'RANGE = (0 to 7), d'REVERSE_RANGE = (7 downto 0)

Các thuộc tính này có thể dùng trong các vòng lặp: FOR i IN RANGE (0 TO 7) LOOP ...

FOR i IN d'RANGE LOOP ...

FOR i IN RANGE (d'LOW TO d'HIGH) LOOP ...

FOR i IN RANGE (0 TO d'LENGTH-1) LOOP ...

Nếu tín hiệu có kiểu liệt kê thì: d’VAL(pos) Trả về giá trị phần tử tại vị trí pos

d’POS(val) Trả về vị trí phần tử có giá trị là val

d’LEFTOF(value) Trả về giá trị phần tử liền bên trái của value

d’RIGHTOF(value) Trả về giá trị phần tử liền bên phải của value

d'PRED(value) Trả về giá trị của phần tử có vị trí nhỏ hơn vị trí của value 1 đơn vị

d'SUCC(value) Trả về giá trị của phần tử có vị trí lớn hơn vị trí của value 1 đơn vị

d’VAL(row,colum) Trả về giá trị ở một vị trí đặc biệt Copyright (c) 10/2006 by NPB 222

Page 223: ThietkeIC_Baigiang.v1.2

Các thuộc tính (tiếp)

Thuộc tính tín hiệu: Giả sử s là một SIGNAL thì ta có :

s‟EVENT : Trả về True khi một sự kiện xảy ra đối với s

s‟STABLE: Trả về True nếu không có sự kiện nào xảy ra đối với s

s‟ACTIVE: Trả về True khi s = 1

s‟QUIET <time>: Trả về True khi trong khoảng thời gian time không có sự kiện nào xảy ra

s‟LAST_EVENT: Trả về thời gian đã trôi qua kể từ sự kiện cuối cùng

s‟LAST_ACTIVE: Trả về thời gian đã qua kể từ lần s = 1 cuối cùng

s‟LAST_VALUE: Trả về giá trị của s ở sự kiện trước

Copyright (c) 10/2006 by NPB 223

Page 224: ThietkeIC_Baigiang.v1.2

Ví dụ

4 câu lệnh sau kiểm tra sự kiện xuất hiện sườn dương của xung clk:

IF (clk'EVENT AND clk='1')...

IF (NOT clk'STABLE AND clk='1')...

WAIT UNTIL (clk'EVENT AND clk='1');

IF RISING_EDGE(clk)...

Copyright (c) 10/2006 by NPB 224

Page 225: ThietkeIC_Baigiang.v1.2

Các thuộc tính do NSD định nghĩa

NSD có thể định nghĩa ra 1 thuộc tính mới theo cú pháp:

Khai báo thuộc tính: ATTRIBUTE attribute_name: attribute_type;

Mô tả thuộc tính: ATTRIBUTE attribute_name OF target_name: class IS value;

Trong đó: attribute_type: kiểu dữ liệu bất kỳ (BIT, INTEGER, STD_LOGIC_VECTOR, ...)

class: TYPE, SIGNAL, FUNCTION, ...

value: '0', 27, "00 11 10 01", ...

Copyright (c) 10/2006 by NPB 225

Page 226: ThietkeIC_Baigiang.v1.2

Ví dụ 1

ATTRIBUTE number_of_inputs: INTEGER;

ATTRIBUTE number_of_inputs OF nand3: SIGNAL IS 3;

...

inputs <= nand3'number_of_pins; -- kết quả = 3

Copyright (c) 10/2006 by NPB 226

Page 227: ThietkeIC_Baigiang.v1.2

Ví dụ 2

Mã hóa kiểu liệt kê: TYPE color IS (red, green, blue, white);

Ngầm định thì red = "00", green = "01", blue = "10", white = "11". Để thay đổi lại ta có thể dùng:

ATTRIBUTE enum_encoding OF color: TYPE IS "11 00 10 01";

Thuộc tính do người dùng định nghĩa có thể khai báo ở bất cứ vị trí nào, ngoại trừ trong thân của PACKAGE.

Copyright (c) 10/2006 by NPB 227

Page 228: ThietkeIC_Baigiang.v1.2

6.4. Chồng toán tử

NSD có thể định nghĩa 1 toán tử mới có trùng tên với 1 toán tử đã được định nghĩa sẵn.

VD: Định nghĩa phép + giữa 1 số INTEGER và 1 BIT. FUNCTION "+" (a: INTEGER, b: BIT) RETURN INTEGER IS

BEGIN

IF (b='1') THEN RETURN a+1;

ELSE RETURN a;

END IF;

END "+";

Sử dụng: SIGNAL inp1, outp: INTEGER RANGE 0 TO 15;

SIGNAL inp2: BIT;

(...)

outp <= 3 + inp1 + inp2;

(...)

Copyright (c) 10/2006 by NPB 228

Page 229: ThietkeIC_Baigiang.v1.2

6.5. GENERIC

GENERIC là cách tạo ra 1 tham số tĩnh dùng chung cho toàn bộ thiết kế.

=> Làm cho chương trình mềm dẻo hơn và tăng tính sử dụng lại.

GENERIC phải được khai báo trong ENTITY với cú pháp như sau:

GENERIC (parameter_name : parameter_type := parameter_value);

Copyright (c) 10/2006 by NPB 229

Page 230: ThietkeIC_Baigiang.v1.2

Ví dụ

Tham số n sau đây luôn có giá trị ngầm định là 8: ENTITY my_entity IS

GENERIC (n : INTEGER := 8);

PORT (...);

END my_entity;

ARCHITECTURE my_architecture OF my_entity IS

...

END my_architecture;

Có thể khai báo nhiều hơn 1 tham số GENERIC trong 1 ENTITY.

GENERIC (n: INTEGER := 8; vector: BIT_VECTOR := "00001111");

Copyright (c) 10/2006 by NPB 230

Page 231: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Phần III:

Very high speed integrated circuit Hardware Description Language

• Giới thiệu các ngôn ngữ HDL (2)

• Cấu trúc mã nguồn VHDL (2)

• Mô hình lập trình VHDL

• Các phương pháp thiết kế

Page 232: ThietkeIC_Baigiang.v1.2

Thiết kế bằng sơ đồ sẽ được sinh tự động ra ngôn ngữ HDL, không đòi hỏi nhiều kỹ năng về HDL.

Thiết kế bằng sơ đồ mang tính trực quan hơn, khả năng tổng hợp được lên phần cứng cao hơn.

232

Viết trực tiếp mã

nguồn bằng VHDL, Verilog.

Sơ đồ khối, sơ đồ cấu

trúc

Sơ đồ trạng thái

Kết hợp

http://dce.hust.edu.vn

Page 233: ThietkeIC_Baigiang.v1.2

233 http://dce.hust.edu.vn

library IEEE;

use IEEE.STD_LOGIC_1164.all;

entity Mach_AND is

port(

a : in STD_LOGIC;

b : in STD_LOGIC;

o : out STD_LOGIC

);

end Mach_AND;

architecture Cach_Hoat_Dong_01 of Mach_AND is

begin

o <= a and b;

end Cach_Hoat_Dong_01;

Page 234: ThietkeIC_Baigiang.v1.2

234 http://dce.hust.edu.vn

Page 235: ThietkeIC_Baigiang.v1.2

Các trạng thái

Chân vào ra

235 http://dce.hust.edu.vn

Red Green ……

……….

Hành động ứng với trạng thái, hoặc phiên chuyển t.thái

Tín hiệu đồng hồ

Page 236: ThietkeIC_Baigiang.v1.2

236 http://dce.hust.edu.vn

Sơ đồ trạng thái

• Thiết kế để xử lý một thuật toán, ít thực thể con.

• Thiết kế được mô tả với nhiều mệnh đề “nếu.. thì..”

• Thiết kế thực thể điều khiển, thực thể trọng tài, thực thể điều phối, phân xử.

• Phù hợp với thiết kế CU, phần xử ngắt, điều phối pipeline trong CPU.

Sơ đồ cấu trúc

• Thiết kế không có tính thuật toán, nhiều thực thể con.

• Thiết kế mang tính ”giao tiếp và phối phép” thực thể.

• Thiết kế mạch tổ hợp, thực thể xử lý tại ngõ vào/ra, schematic.

• Phù hợp với thiết kế ALU, thiết kế thanh ghi đa năng/chuyên dụng, thiết kể tổng thể toàn bộ CPU

Viết mã nguồn HDL

• Thiết kế nhỏ, dễ kiểm soát hoạt động; hoặc thuật toán, thiết kế có tính tuần tự cao.

• Giả lập môi trường hoạt động để test.

• Thiết kế tạm mức hệ thống (không có khả năng tổng hợp), sau đó được thay thể dần bằng các thiết kế khả tổng hợp, với tiếp cận top-down.

• Thiết kế FlipFlop, Mux, ALU,

Page 237: ThietkeIC_Baigiang.v1.2

Dù thiết kế bằng bằng sơ đồ cấu trúc hay trạng thái, thiết kế đó đều được dùng để sinh ra mã HDL.

Thiết kế bằng sơ đồ cung cấp góc nhìn toàn diện hơn, logic hơn so với viết trực tiếp mã HDL

237 Copyright (c) 10/2006 by NPB

sinh

HDL

Page 238: ThietkeIC_Baigiang.v1.2

1/2

238 Copyright (c) 10/2006 by NPB

counter = 0

Init

/01/

Stop

/00/

Reset='1'

counter := 0counter := 0

Button='1' and

counter < Threshold

counter := counter + 1counter := counter + 1

counter >= Threshold

Go

/10/

StopLamp <='0'

GoLamp<='0'

StopLamp <='0'

GoLamp<='0'

counter:=counter -1

GoLamp <= '1'

counter:=counter -1

GoLamp <= '1'

StopLamp<='1'StopLamp<='1'

counter := counter * 2counter := counter * 2

architecture FSM_ARCH of entity_name is

attribute enum_encoding: string;

-- Khai báo các trạng thái

type Sreg_type is (

Stop, Init, Go

);

-- Nếu cần, chỉ định rõ giá trị binary của từng trạng thái

attribute enum_encoding of Sreg_type type is

"00 " & -- Stop

"01 " & -- Init

"10” ; -- Go

-- Biến chỉ trạng thái hiện tại

signal Sreg: Sreg_type;

begin

process (CLK)

if CLK'event and CLK = '1' then

….. -- xem slide tiếp theo

end if;

end process;

end architecture FSM_ARCH

State 1

State 2

State 3

State 4

State 5

Page 239: ThietkeIC_Baigiang.v1.2

Không có lệnh chuyển

trạng thái Sreg=?

-- Quá trình biến đổi trạng thái

case Sreg is

-- Chuyển từ trạng thái Go thành ??

when Go =>

State Action -- Hành động của trạng thái

if (condition) then

Sreg <= State2;

Transition Action;

else if (condition) then

Transition Action;

else

Sreg <= Default State

end if

-- Biến đổi từ trạng thái Stop thành ??

when Stop =>

-- Biến đổi từ trạng thái còn lại

when others =>

Sreg <= Init State; // or null;

end case

2/2

239 Copyright (c) 10/2006 by NPB

counter = 0

Init

/01/

Stop

/00/

Reset='1'

counter := 0counter := 0

Button='1' and

counter < Threshold

counter := counter + 1counter := counter + 1

counter >= Threshold

Go

/10/

StopLamp <='0'

GoLamp<='0'

StopLamp <='0'

GoLamp<='0'

counter:=counter -1

GoLamp <= '1'

counter:=counter -1

GoLamp <= '1'

StopLamp<='1'StopLamp<='1'

counter := counter * 2counter := counter * 2

giữ nguyên trạng thái

Page 240: ThietkeIC_Baigiang.v1.2

entity ShiftReg_Parity is

port(

CE : in STD_LOGIC;

CLK : in STD_LOGIC;

ParityType : in STD_LOGIC;

Serial_nParallel : in STD_LOGIC;

Din : in STD_LOGIC_VECTOR(1 downto 0);

SerialOut : out STD_LOGIC

);

end ShiftReg_Parity;

architecture ShiftReg_Parity of ShiftReg_Parity is

---- Component declarations -----

component DFF_CE

port (

CE : in STD_LOGIC;

CLK : in STD_LOGIC;

D : in STD_LOGIC;

Q : out STD_LOGIC

);

end component;

component mux2x1

port (

I0 : in STD_LOGIC;

I1 : in STD_LOGIC;

S : in STD_LOGIC;

O : out STD_LOGIC

);

………………………………

……………………………… U2 : mux2x1

port map(

I0 => Din(0),

I1 => NET472,

O => NET165,

S => Serial_nParallel

);

U3 : mux2x1

port map(

I0 => Din(1),

I1 => NET588,

O => NET195,

S => Serial_nParallel

);

NET2684 <= not(Serial_nParallel);

NET395 <= Din(1) xor Din(0);

NET209 <= NET2684 and NET2782;

end ShiftReg_Parity;

240 http://dce.hust.edu.vn

Page 241: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Phần IV:

• Bộ dồn kênh / phân kênh

• ALU

• RAM/Thanh ghi đa năng

• Bộ nhớ chương trình

• Truy cập bộ nhớ chính

• Bộ định thời

• Thanh ghi chuyên dụng

• Bộ giải mã lệnh tuần tự

• Bộ giải mã lệnh rẽ nhánh

Page 242: ThietkeIC_Baigiang.v1.2

242 http://dce.hust.edu.vn

I0

I1

I2

I3 S

MUX2x1: Process (I,S)

Begin

If (S='1') Then

O <= I(1);

Else

O <=I(0);

End If;

End Process;

IC: Mux/Demux

Lập trình HDL: Lệnh rẽ nhánh If ~.

Mỗi lệnh if trong HDL, tương đương với một IC Mux/Demux, và ngược lại.

MUX4x1

Mô tả VHDL và sơ đồ mạch của MUX2x1

Page 243: ThietkeIC_Baigiang.v1.2

243 http://dce.hust.edu.vn

O0

O1

O2

S O3

DEMUX2x1: Process (I,S)

Begin

If (S='1') Then

O(0) <= I;

Else

O(1) <=I;

End If;

End Process;

IC: Mux/Demux

Lập trình HDL: Lệnh rẽ nhánh If ~

DEMUX4x1

Mô tả VHDL và sơ đồ mạch của DEMUX2x1

2 bên truyền, nhận sử dụng Mux/Demux

để giảm số dây dẫn truyền tín hiệu

Page 244: ThietkeIC_Baigiang.v1.2

1/3

244 http://dce.hust.edu.vn

Mô tả entity, biểu tượng Thể hiện architecture bằng sơ đồ cấu trúc

architecture dataflow of adder is

signal TEMP_RESULT : std_logic_vector(3 downto 0);

signal TEMP_RESULT2 : std_logic_vector(3 downto 0); signal C3: std_logic;

begin

TEMP_RESULT <= ('0' & A(2 downto 0)) + ('0' & B(2 downto 0)) + CI; -- Chỉ cộng 3 bit thấp

C3 <= TEMP_RESULT(3); -- Lấy cờ nhớ của 3 bit thấp

TEMP_RESULT2 <= ('0' & A(3)) + ('0' & B(3)) + C3; -- Cộng bit lbs và cớ nhớ 3 bit thấp

Q <= TEMP_RESULT2(0) & TEMP_RESULT(2 downto 0);--Tổng=ghép bit lbs và 3 bit thấp

CO <= TEMP_RESULT2(1); -- Cờ nhớ = giá trị nhớ của phép cộng bit lbs

OV <= TEMP_RESULT2(1) xor TEMP_RESULT(7); -- Cờ tràn = kiểm tra việc đảo dấu

end architecture;

A

B

Q

CO

OV

CI

Mô tả architecture ở dạng dataflow, với phép cộng trên kiểu std_logic_vector

Page 245: ThietkeIC_Baigiang.v1.2

2/3

245 http://dce.hust.edu.vn

Phép trừ bằng cách dùng số bù 2 cần 2 lần thực hiện phép cộng trễ lớn.

Phép trừ bằng cách dùng số bù 1 chi cần 1 phép cộng trễ giảm ~ ½.

A - B = - ( ( -A ) + B )

= - ( A + 1 + B )

= - ( A + B ) - 1

= A + B + 1 - 1

= A + B

B

Q

CO

OV

CI

0

1

A

•Nguyên lý

0

1

S

ADD/SUB

Page 246: ThietkeIC_Baigiang.v1.2

3/3

Phép cộng/trừ 1 đơn vị được sử dụng nhiều.

246 http://dce.hust.edu.vn

Q

CO

OV

CI

0

1

ADD/SUB

0

1

A

Thêm một bộ ghép kênh để chọn giá trị cố định “1” cho toán hạng thứ 2.

B 0

1

ADD/INC

“1”

Page 247: ThietkeIC_Baigiang.v1.2

DO = DI1 and DI2

247 http://dce.hust.edu.vn

architecture and_arch of ander is

signal tmp: std_logic_vector(7 downto 0);

begin

tmp <= DI1 and DI2; -- Trung gian để tính cờ Zero

DO <= tmp;

ZF <= „1' when tmp = 0 else „0'; -- Tính cờ Zero

end architecture;

DO = DI (phép gán) architecture move_arch of mover is

begin

DO <= DI;

end architecture;

Page 248: ThietkeIC_Baigiang.v1.2

DO = DI1 shr 1

248 http://dce.hust.edu.vn

architecture shr_arch of shr is

begin

DO <= '0' & DI(7 downto 1) ;

CF <= DI(0);

end architecture;

architecture rr_arch of rr is

begin

DO <= DI(6 downto 0) & D(7);

CF <= DI(7);

end architecture;

MSB LSB

C0

„0‟

DI(7)

DI(6)

DI(5)

DI(4)

DI(3)

DI(2)

DI(1)

DI(0)

DO(7)

DO(6)

DO(5)

DO(4)

DO(3)

DO(2)

DO(1)

DO(0)

CF

MSB LSB

C

DO = DI1 rr 1

Page 249: ThietkeIC_Baigiang.v1.2

Các câu lệnh phần mềm chỉ có 2 dạng là:

Tuần tự Ins 0; Ins 1; Ins 2;

Rẽ nhánh If .. Then… Else

Tương ứng với phần cứng là:

Máy trạng thái FSM

Bộ ghép kênh

249 http://dce.hust.edu.vn

Có sự tương đồng giữa các đoạn mã phần mềm và các đoạn mã mô tả phần cứng HDL. có thể chuyển đổi từ phần mềm thành phần cứng.

Khai thác ưu thế phần cứng: song song, etc.

Page 250: ThietkeIC_Baigiang.v1.2

IP cores, Intellectual Property cores, là một khối logic hoặc dữ liệu được sử dụng trong FPGA hoặc ASIC

IP cores cho phép tái sử dụng và tùy biến thiết kế

Sử dụng IP core giống như sử dụng các thư viện phần mềm, chỉ việc #include là được

250 http://dce.hust.edu.vn

IP Cores

Hard cores

Firm cores

Soft cores

Đóng gói dạng

hộp đen (giống

như mã nguồn

đóng)

Đóng gói dạng

hộp trắng (giống

như mã nguồn

mở)

Đóng gói dạng

hộp đen, nhưng

có thể thay đổi

cấu hình được

Libero IPcores

Page 251: ThietkeIC_Baigiang.v1.2

251 http://dce.hust.edu.vn

Cần cái làm gì thì chỉ thực hiện cái đó Cứ thực hiện trước

lựa chọn kết quả sau

Software:

lệnh 1;

lệnh 2;

if (S) then

lệnh 3

else

lệnh 4

end if

Hardware:

mạch 3

mạch 4

mạch 1

mạch 2

Page 252: ThietkeIC_Baigiang.v1.2

1/4

ALU thường là mạch tổ hợp với 2 thành phần: Các mạch thực hiện phép toán.

Các bộ ghép kênh.

Sơ đồ nguyên lý

252 http://dce.hust.edu.vn

0

1

2

3

+ -

<< >>

x

cls

opcode O2, O1

a

b

Opcode

O2 O1 O0

ALU

0 0 x a x b

0 1 0 a + b

0 1 1 a –b

1 0 x clear a

1 1 0 a << b

1 1 1 a >> b

O0

Page 253: ThietkeIC_Baigiang.v1.2

2/4

Ngoài ra, các bộ ghép kênh còn được sử dụng để phối ghép trạng thái cờ từ các phép toán, theo cách tương tự.

Nhận xét: cho dù mã lệnh chỉ yêu cầu thực hiện 1 phép toán, nhưng tất cả các mạch phép toán đều hoạt động.

Có thể tiết kiệm năng lượng bằng cách ngắt các mạch tính toán vô ích khỏi nguồn cấp.

Dùng chính opcode để điều khiển cấp nguồn điện.

Điều này về cơ bản không ảnh hưởng tới tốc độ tính toán, vì mọi mach phép toán đều thực hiện song song.

253

Page 254: ThietkeIC_Baigiang.v1.2

3/4

Opcode dùng để chọn mạch tính toán trên ALU, chính là opcode của tập lệnh CPU, có thể với một chút thay đổi nhỏ.

Thiết lập bộ mã cho opcode (ví dụ phép + ứng với mã 010) có ảnh hưởng tới hiệu năng của ALU, vì sẽ làm tăng/giảm hiệu quả giải mã opcode.

Lưu ý thiết kế ALU: Một số mạch phép toán có thể thực hiện nhiều phép toán (ví dụ bộ cộng/trừ). Khi đó opcode cho các phép toán này cần sai khác bit càng ít càng tốt tối thiểu hóa tốt hơn hiệu năng cao hơn.

254 http://dce.hust.edu.vn

Page 255: ThietkeIC_Baigiang.v1.2

4/4

Ví dụ về 2 cách mã opcode khác nhau. Cách thứ 2 gây khó khăn cho việc giải mã phép cộng cần nhiều thời gian tính toán hơn, hiệu năng thấp.

255 http://dce.hust.edu.vn

opcode ALU

00x a x b

010 a + b

011 clear a

10x a –b

110 a << b

111 a >> b

opcode ALU

00x a x b

010 a + b

011 a –b

10x clear a

110 a << b

111 a >> b

Cách 1 Cách 2

Page 256: ThietkeIC_Baigiang.v1.2

ALU nhằm thực hiện phép toán

PreALU cung cấp các toán hạng vào cho ALU

Toán hạng vào có thể lấy từ tập thanh ghi, bộ nhớ chính, etc.

1 thanh ghi muốn đưa dữ liệu tới bao nhiêu module khác cũng được, nên có thể là toán hạng 1,2, đích. Nhưng bộ nhớ thì không.

256 http://dce.hust.edu.vn

0

1

2

3

Thanh ghi AX

Thanh ghi BX

Bộ nhớ chính

Toán hạng 1 Toán hạng 2

0

1

Page 257: ThietkeIC_Baigiang.v1.2

1/2

Thanh ghi dùng để lưu trữ thông tin bên trong CPU, có tốc độ cao nhất trong phân cấp bộ nhớ.

Có thể chứa cả dữ liệu và địa chỉ.

Chỉ gồm bit nhớ, không có phần cứng đặc thù kèm theo.

257 http://dce.hust.edu.vn

CLK

DOUTDIN

RESETCE

U1

DFF

CLK

DOUTDIN

RESETCE

U2

DFF

DOUT(2:0)

CLK

Reset

DIN(7:0)

DIN

(7)

DO

UT

(7)

DIN

(6)

DO

UT

(6)

CLK

DOUTDIN

RESETCE

U3

DFF

DIN

(5)

DO

UT

(5)

CLK

DOUTDIN

RESETCE

U4

DFF

DIN

(4)

DO

UT

(4)

CLK

DOUTDIN

RESETCE

U5

DFF

CLK

DOUTDIN

RESETCE

U6

DFF

DIN

(3)

DO

UT

(3)

DIN

(2)

DO

UT

(2)

CLK

DOUTDIN

RESETCE

U7

DFF

DIN

(1)

DO

UT

(1)

CLK

DOUTDIN

RESETCE

U8

DFF

DIN

(0)

DO

UT

(0)

DIN(7:0)

DOUT(7:0)

CE

Dùng IP Core trong ActiveHDL

để sinh mã, tạo thanh ghi Thiêt kế thanh ghi từ các D-FF bằng sơ đồ cấu trúc

Page 258: ThietkeIC_Baigiang.v1.2

2/2

258 http://dce.hust.edu.vn

entity IPCore_GPR is

port (

CLR : in std_logic; -- xóa dữ liệu

CLK : in std_logic; -- tín hiệu đồng hồ

CE : in std_logic; -- cho phép h.động

--! cổng vào dữ liệu, nội dung cần nhớ

DATA : in std_logic_vector(7 downto

0);

--! cổng ra dữ liệu ~ nội dung đã nhớ

Q : out std_logic_vector(7 downto 0)

);

end entity;

architecture GPR_arch of IPCore_GPR is

begin

process (CLK)

begin

--! tại sườn dương của đồng hồ

if rising_edge(CLK) then

--! Nếu được phép hoạt động

if CE = '1' then

--! xóa dữ liệu đồng bộ

if CLR = '1' then

Q <= (others => '0');

else --! hoặc chốt dữ liệu

Q <= DATA;

end if; -- CLR

end if; -- CE

end if; -- clk

end process;

end GPR_arch;

Page 259: ThietkeIC_Baigiang.v1.2

1/2

Thiết kế giống như một mảng các thanh ghi đa năng, nhưng mảng chỉ cho phép đọc dữ liệu.

259 http://dce.hust.edu.vn

0

1

2

3

Đơn vị nhớ

Dữ

liệu

ra

Địa chỉ

Dùng IP Core trong ActiveHDL để sinh mã,

tạo ROM trống, hoặc tự lấy thông tin từ 1 file hexa

Thiêt kế ROM từ mảng các thanh ghi

kết hợp với bộ chọn kênh MUX

Page 260: ThietkeIC_Baigiang.v1.2

2/2

260 http://dce.hust.edu.vn

entity IPCore_rom is

port (

OE : in std_logic; -- cho phép dữ liệu

-- đường địa chỉ

ADDRESS : in std_logic_vector(2 downto 0);

-- đường dữ liệu

Q : out std_logic_vector(7 downto 0)

);

end entity;

architecture rom_arch of IPCore_rom is

begin

process (ADDRESS, OE)

variable ADDR_TEMP: std_logic_vector(1

downto 0);

begin

ADDR_TEMP := ADDRESS(1 downto 0);

if (OE = '1') then

if (ADDRESS(2) = '0') then

case (ADDR_TEMP) is

when "00" => Q <= "01100001";

when "01" => Q <= "01100010";

when "10" => Q <= "00110100";

when others => Q <= "00000000";

end case;

else

– mọi giá trị còn lại trong ROM = 0

Q <= "00000000";

end if;

else – nếu OE = ‘0’

Q <= "ZZZZZZZZ"; -- trở kháng cao

end if;

end process;

end architecture;

Page 261: ThietkeIC_Baigiang.v1.2

1/2

Tương tự như ROM, nhưng cho phép ghi dữ liệu.

Có nhiều kiểu thiết kế khác nhau: đơn/đa cổng, chung/riêng đường địa chỉ/dữ liệu.

261 http://dce.hust.edu.vn

0

1

2

3

Đơn vị nhớ

Dữ

liệu

ra

Địa chỉ

giải

địa

chỉ

CE0

CE1

CE2

CE3

Dữ liệu vào

Page 262: ThietkeIC_Baigiang.v1.2

2/2

262 http://dce.hust.edu.vn

entity IPCore_ram is

port (

WE : in std_logic;

CLK : in std_logic;

ADDR : in std_logic_vector(3 downto 0);

DATA : in std_logic_vector(7 downto 0);

Q : out std_logic_vector(7 downto 0)

);

end entity;

architecture ram_arch of IPCore_ram is -- dùng mảng dữ liệu để nhớ giá trị

type IPCore_ram_mem_type is array (15 downto

0) of std_logic_vector(7 downto 0);

signal IPCore_ram_mem: IPCore_ram_mem_type;

begin

-- chỉ ghi dữ liệu tại sườn dương clk và WE=1

process (CLK)

begin

if rising_edge(CLK) then

if (WE = '1') then

IPCore_ram_mem(CONV_INTEGER(ADDR))

<= DATA;

end if;

end if;

end process;

-- luôn xuất ra ngoài giá trị tại địa chỉ đã cho

Q <=

IPCore_ram_mem(CONV_INTEGER(ADDR));

end architecture;

Page 263: ThietkeIC_Baigiang.v1.2

Thanh ghi lệnh IR, Instruction Register, chứa mã lệnh đang được giải mã.

Về thiết kế, chỉ là một thanh ghi ghi/đọc bình thường

Đặc trưng: đường dữ liệu vào được nối trực tiếp với bộ nhớ chương trình, và dữ liệu đầu ra đưa tới bộ giải mã lệnh.

263 http://dce.hust.edu.vn

ROM

Thanh ghi lệnh

Giải mã

lệnh

Page 264: ThietkeIC_Baigiang.v1.2

1/5

Thanh ghi bộ đếm chương trình PC, Program Counter hoặc Instruction Pointer, chứa địa chỉ của lệnh sẽ được thực hiện.

Phần lớn các lệnh trong chương trình là tuần tự địa chỉ của lệnh kế tiếp = địa chỉ của lệnh hiện tại + độ lệch địa chỉ giữa 2 lệnh đó. dữ liệu vào. Với bộ xử lý RISC, độ lệch này là không đổi. Thiết kế PC sẽ bao gồm một bộ cộng.

Với lệnh rẽ nhánh, PC phải ghi nhớ địa chỉ mới (địa chỉ nhảy tới) bất kỳ. dữ liệu vào.

Ngắt xảy ra rẽ nhánh tới 1 chương trình con phục vụ ngắt ở địa chỉ nào đó dữ liệu vào.

264 http://dce.hust.edu.vn

Page 265: ThietkeIC_Baigiang.v1.2

2/5

Rẽ nhánh do trở về từ chương trình con địa chỉ trở về sẽ được đưa vào PC từ Stack dữ liệu vào.

Do có nhiều nguồn dữ liệu vào nên thiết kế PC phải bao gồm một bộ ghép kênh.

265 http://dce.hust.edu.vn

ROM

Thanh ghi PC

Địa chỉ

Mu

x

Nguyên nhân rẽ nhánh

+

Địa chỉ trở về từ Stack

Địa chỉ c.trình con ngắt

Địa chỉ do lệnh rẽ nhánh

Địa chỉ lệnh hiện tại

Độ lệch địa chỉ

Phân

xử

logic

Page 266: ThietkeIC_Baigiang.v1.2

3/5

Bộ phân xử nhằm phân tích: opcode của mã lệnh hiện tại (chứa trong thanh ghi IR)

một số ngữ cảnh hiện tại như có ngắt không, kết quả giải mã lệnh hiện tại, etc.

Để ra quyết định điều khiển các thành phần còn lại.

266 http://dce.hust.edu.vn

Page 267: ThietkeIC_Baigiang.v1.2

4/5

267 http://dce.hust.edu.vn

CCE

C E

C (1 0:0 )

C L K

D (1 0:0 )

P R E SE T

P R L

U1

BUC11CPPC

PR

CLK

Reset

C E

Q (1 0:0 )C L K

D (1 0:0 )

STACK1

REG11CNN

C E

Q (1 0:0 )C L K

D (1 0:0 )

STACK2

REG11CNN

CLK

CEST2

CEST1

INS(8:0)IB0(8:0)

STR(7:6)IB0(10:9)

PWRDN

PRPC

Tin hieu tich cuc khi dung hoat dong, tiet kiem nang luong

PRC(10:0)

C C E

C L K C E S T1

C E S T2

P W R D N

R e se t P C M S(1 :0 )

R E T

C A L L

P R P C

A ctInt P re Lo ad

PC_Logic

pclogic

Tin hieu tich cuc tai cuoi chu ki

thu nhat cua lenh re nhanh de den

chu ki thu 2 cho phep Buc nap gia

tri moi

IB0(INSNUM:0)

ST(10:0)

Reset

Reset se sua xoa SP1,SP2(khong nho ctc nua)

va reset lai bo dem

Reset

= not PWRDN

IB0(8 dow...

Convert

RET

CALL

CEST1

CEST2

CLK

INS(8:0)

S E L(1 :0 ) O B (IN S NU M :0 )

InterruptVectorTable

VectorTable

IB3(INSNUM:0)IntSel(1:0)

S E L(1 :0 )

IB 2 (IN SN U M:0 )

IB 1 (IN SN U M:0 )

IB 0 (IN SN U M:0 )

O B (IN S NU M :0 )

IB 3 (IN SN U M:0 )

U2

MUX11X04

ActInt

Page 268: ThietkeIC_Baigiang.v1.2

5/5

Lưu ý: Tín hiệu reset giá trị trong thanh ghi PC sẽ đưa địa chỉ khởi động hệ thống.

268 http://dce.hust.edu.vn

Page 269: ThietkeIC_Baigiang.v1.2

1/2

Bộ đếm thời gian, Time Counter, đếm số chu kỳ xung nhịp.

Ứng dụng: tạo xung nhịp cố định với chu kỳ là số nguyên lần xung nhịp hệ thống, tạo hàm delay()

Thiết kế: Một bộ cộng để đếm số chu kỳ xung nhịp hệ thống.

Thanh ghi lưu trữ kết quả đếm hiện tại của bộ cộng.

Thanh ghi lưu trữ giá trị khởi tạo của bộ cộng.

Xác định thời điểm tràn bộ cộng. 269 http://dce.hust.edu.vn

xung nhip hệ thống

system clock

Cờ tràn của bộ

đếm thời gian

Page 270: ThietkeIC_Baigiang.v1.2

2/2

Lưu ý: Thanh ghi định thời là một thành phần của tập thanh ghi, nhận giá trị từ ALU.

Ngắt định thời sẽ được chuyển tới bộ giải mã xử lý, để gọi chương trình con phục vụ ngắt tương ứng.

270 http://dce.hust.edu.vn

+ 1

Bộ cộng Giá trị

nạp AND /

OR Xác định

tràn

Cờ tràn Ngắt định thời

Thanh ghi

định thời

Giá trị

hiện thời

0

1

Page 271: ThietkeIC_Baigiang.v1.2

1/3

Trễ truyền lan của tín hiệu là khoảng thời gian cần thiết để tín hiệu đi từ đầu vào tới đầu ra và có trạng thái ổn định và hợp lệ.

271 http://dce.hust.edu.vn

out

t

in

out

ổn định

2ns

Trễ truyền lan tăng khi nhiệt độ môi trường hoạt động, điện áp nguồn cấp, kéo tải đầu ra tăng.

Page 272: ThietkeIC_Baigiang.v1.2

2/3

Dây dẫn dài 6 inch, có trễ truyền lan khoảng 1ns.

Cổng logic, tùy công nghệ chế tạo, trễ khoảng 10ns ~ 1ps.

272 http://dce.hust.edu.vn

Trễ trên một đường dẫn bằng tổng độ trễ của từng thành phần trên đường dẫn đó. T = Σ ti

Độ trễ của một IC được tính bằng độ trễ lớn nhất trong các đường dẫn giữa đầu vào và đầu ra.

15,2cm, trễ ~1 ns

Trễ trên đường dẫn AiCi+1 lớn nhất

Page 273: ThietkeIC_Baigiang.v1.2

3/3

Độ trễ lớn nhất của một IC chính bằng chu kì hoạt động của IC đó quyết định tần số làm việc tối đa Fmax.

Độ trễ thay đổi theo từng cách tối ưu hóa thiết kế, IC vật lý (FGPA, CPLD, etc).

Độ trễ xác định được cụ thể trong quá trình tổng hợp lên phần cứng, không xác định được nếu chỉ tổng hợp mức logic.

273 http://dce.hust.edu.vn

Trễ trên đường dẫn AiCi+1 lớn nhất

Page 274: ThietkeIC_Baigiang.v1.2

1/2

Các tín hiệu ở ngõ vào của phần tử nhớ thay đổi thì cũng không ảnh hưởng tới tín hiệu ra của phần tử nhớ.

274 http://dce.hust.edu.vn

Regs

CE

5V

0V t

2.5V 2.5V

5V

0V t

quá độ xác lập

vai trò

cách ly

lệnh n+1 lệnh n

Page 275: ThietkeIC_Baigiang.v1.2

2/2

275 http://dce.hust.edu.vn

out

t

in

out

chốt dữ liệu

2ns

R

Pipeline: thêm thanh ghi để ngăn quá trình quá độ của lệnh mới, với

giá trị đã ổn định của lệnh cũ.

→ vị trí đặt thanh ghi

? X Y

trễ T1= 1.4 ns trễ T2= 0.6 ns

trễ T= 1.4 + 0.6 = 2 ns

Khi chưa có thanh ghi R, độ trễ

T của mạch là tổng độ trễ của

mọi thành phần trong mạch

Sau khi có thanh ghi, mạch chia thành 2 nửa. Độ trễ TR của mạch là

max(T1,T2). Vậy hiệu năng xử lý đã tăng 2 /1.4 = 1.43 lần

Page 276: ThietkeIC_Baigiang.v1.2

1/2

276 http://dce.hust.edu.vn

Công đoạn

Lệnh 1

Lệnh 2

Mạch số trước khi có pipeline

Mạch 1 nối tiếp mạch 2, … nối tiếp mạch 5

Mạch số khi đã tiến hành pipeline hóa

Mạch 3 Mạch 2 Mạch 1 Mạch 5 Mạch 4 R R R R

Stage 1 Stage 2 Stage 3 Stage 5 Stage 4

Stage 1 Stage 2 Stage 3 Stage 5 Stage 4

Page 277: ThietkeIC_Baigiang.v1.2

2/2

277 http://dce.hust.edu.vn

Bộ cộng

Bộ cộng

sau pipeline

với

3 công đoạn

Page 278: ThietkeIC_Baigiang.v1.2

1/4

Mỗi bộ xử lý có một tập lệnh xác định.

Tập lệnh thường có hàng chục đến hàng trăm lệnh.

Mỗi lệnh là một chuỗi số nhị phân mà bộ xử lý hiểu được để thực hiện một thao tác xác định.

Các lệnh được mô tả bằng các ký hiệu gợi nhớ dạng text chính là các lệnh của hợp ngữ.

278 http://dce.hust.edu.vn

Page 280: ThietkeIC_Baigiang.v1.2

3/4

280 http://dce.hust.edu.vn

PicoBlaze

http://bleyer.org/pacoblaze/picoblaze.pdf

hoặc xem offline

Page 281: ThietkeIC_Baigiang.v1.2

4/4

281 http://dce.hust.edu.vn

Có nhiều lệnh tương đồng với nhau về ý nghĩa của nhóm các bit nhị phân. MIPS 150 rt = temporary reg, rs = source reg, rd = destination reg, shamt = shift amount

Dạng lệnh: <opcode><operand>n

Các phân chia nhóm bít như vậy gọi là khuôn dạng lệnh.

Ví dụ: lệnh c = a + b, c = a - b thường cùng khuôn dạng lệnh.

Ví dụ: lệnh c = a + b và c = a + 1 thường khác khuôn dạng lênh.

Page 282: ThietkeIC_Baigiang.v1.2

1/8

Bộ giải mã lệnh nhằm để biến đổi các opcode đầu vào thành các tín hiệu điều khiển chọn toán tử và chọn toán hạng đầu ra.

Tín hiệu điều khiển chọn toán tử thường là chân Select của các bộ ALU Mux, để cho biết phép toán cần thực hiện là gì.

Tín hiệu điều khiển chọn toán hạng là chân Chip Enable của các thanh ghi và bộ nhớ để cho biết kết quả phép toán sẽ được lưu trữ vào đâu.

282 http://dce.hust.edu.vn

opcode

Giải mã

lệnh CE của Reg A

CE của Reg B

CE của bộ nhớ chính

Chọn toán tử của ALU

Page 283: ThietkeIC_Baigiang.v1.2

2/8

Opcode của tập lệnh thường bao gồm: các sub opcode chọn toán tử của ALU.

và các opcode cho các lệnh không dùng tới ALU như rẽ nhánh, etc.

Nhiều lệnh trong tập lệnh có thể chỉ tương ứng với một toán tử duy nhất trong ALU. Ví dụ, phép rd = rs + 10 và phép rd = rs + rt với ALU là như nhau. phải biến đổi opcode của lệnh một chút, trước khi gửi tới chân chọn toán tử của ALU 283 http://dce.hust.edu.vn

opcode Giải mã

khuôn dạng ALU

Khuôn dạng 1?

Khuôn dạng 2?

Khuôn dạng 3?

Page 284: ThietkeIC_Baigiang.v1.2

Opcode(31:0)

Opcode(31)

Opcode(30)

Opcode(29)

Opcode(28)

Opcode(27)

Opcode(26)

R_type

Opcode(31)

Opcode(30) Load_Store

Opcode(31)

Opcode(30)

Opcode(29)I_type

Xu ly truong hop lenh JR va JALR

Jump_Branch

Opcode(5)

Opcode(4)

Opcode(3)

Opcode(2)

Opcode(1)

Lenh JR / JALR

3/8

Giải mã khuôn dạng lệnh MIPS

284 http://dce.hust.edu.vn

Page 285: ThietkeIC_Baigiang.v1.2

4/8

Trong một khuôn dạng, ý nghĩa và kích thước của các nhóm bit là giống nhau. chung cách giải mã dùng chung module giải mã.

Các lệnh cùng khuôn dạng thì thường chung đặc tính điều khiển như thay đổi cờ, rẽ nhánh, etc.

285 http://dce.hust.edu.vn

3 bit 1 bit 2 bit 2 bit Khuôn dạng 1

3 bit 2 bit 3 bit Khuôn dạng 2

3 bit 4 bit Khuôn dạng 3 1 bit

Page 286: ThietkeIC_Baigiang.v1.2

5/8

Trong mã lệnh, chuỗi bit chứa thông tin về toán hạng nguồn sẽ được gửi tới các bộ mux để chọn toán hạng đầu vào cho ALU.

286 http://dce.hust.edu.vn

0

1

2

3

Thanh ghi AX

Thanh ghi BX

Bộ nhớ chính

Toán hạng 1

0

1

2

3

Toán hạng 2

Opcode cũng có thể là chứa luôn toán hạng theo phương pháp địa chỉ tức thì. Ví dụ c = a + 112.

Với toán hạng ngầm định thì cần tiến hành giải mã theo qui tắc ngầm định đã được đặc tả.

112 opcode

Page 287: ThietkeIC_Baigiang.v1.2

6/8

Bộ giải mã lệnh còn thực hiện các công việc: Điều khiển các quá trình song song bên trong bộ xử lý.

Điều khiển các ngắt (Vì ngắt cũng chỉ là một lệnh rẽ nhánh đặc biệt)

Điều khiển rẽ nhánh.

287 http://dce.hust.edu.vn

Page 288: ThietkeIC_Baigiang.v1.2

7/8

Lệnh rẽ nhánh cần được xử lý trong 2 chu kỳ xung nhịp.

Các vấn đề phát sinh: 1. Lệnh rẽ nhánh không sử dụng tới ALU. Vậy ALU làm

gì trong lúc lệnh rẽ nhánh thực hiện?

2. Trong lúc rẽ nhánh, các lệnh đang tồn tại dở trong ống lệnh pipeline sẽ phải xử trí thế nào?

3. Ống lệnh có 5 công đoạn. Vậy khi lệnh đầu tiên sau rẽ nhánh mới chỉ nằm ở công đoạn đầu tiên, các công đoạn sau sẽ làm gì?

288 http://dce.hust.edu.vn

Page 289: ThietkeIC_Baigiang.v1.2

8/8

Nguyên tắc xử lý rẽ nhánh: Đánh dấu các chu kỳ rẽ nhánh để có thể nhận biết được CPU đang ở giai đoạn nào của lệnh rẽ nhánh.

Nếu một thành phần nào đó của CPU không được dùng đến, (ví dụ ALU, cá công đoạn sau) thì phải chèn lệnh NOP vào các thành phần đó (ví dụ NOP là lệnh trung tính).

Với ALU: bộ giải mã phải đưa tín hiệu chọn toán tử NOP tới ALU.

Với điều khiển công đoạn: bộ giải mã đẩy giá trị NOP vào các thanh ghi điều khiển công đoạn, bằng cách reset các thanh ghi này.

Bộ giải mã phải tính toán số lượng lệnh NOP được đưa vào ALU và các công đoạn sao cho phù hợp với số công đoạn bị thiếu trong ống khi rẽ nhánh. Giải pháp: sử dụng thanh ghi dịch.

289 http://dce.hust.edu.vn

Page 290: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Phụ lục:

Page 291: ThietkeIC_Baigiang.v1.2

1/2

Thiết kế DFF từ Latch

FPGA “thích” Flip Flop hơn

291 http://dce.hust.edu.vn

RS Latch

Latch

• Không đồng bộ

• Tích cực theo mức

• Ít cổng logic, ít năng lượng

Flip Flop

• Đồng bộ

• Tích cực theo sườn

• Nhiều cổng logic, tốn năng lượng

Transparent Latch: Mạch chốt không đồng bộ.

Page 292: ThietkeIC_Baigiang.v1.2

1/2

Transparent Latch: xuất hiện trạng thái đầu ra không chịu ảnh hưởng của tín hiệu vào. gán không hoàn toàn.

Khi tổng hợp mạch trên các thiết bị của Altera, Xilinx,… đều xuất hiện dị thường có thông báo warning.

Nên thay Transparent Latch bằng FlipFlop kích hoạt theo sườn.

292 http://dce.hust.edu.vn

-- ! @brief Transparent Latch

library ieee;

use ieee.std_logic_1164.all;

entity tran_latch is

port (vi : in std_logic;

en : std_logic;

vo : out std_logic;

end entity tran_latch ;

architecture RTL of tran_latch is

begin

process(vi, en)

begin

if en = '1' then

vo <= vi;

end if;

-- Oh!. Khi en=‘0’ thi sao??

end process;

end architecture RTL;

thay bằng

CLK

Page 293: ThietkeIC_Baigiang.v1.2

Một số lệnh chỉ được sử dụng trong các testbench, không thể được tổng hợp lên một phần cứng cụ thể.

Hoặc các lệnh chỉ sử dụng ở thiết kế mức logic. Nếu muốn tổng hợp được, phải chuyển đổi thành dạng khác.

293 http://dce.hust.edu.vn

process

begin

CLK <= '1'; wait for 10 ns;

CLK <= '0'; wait for 10 ns;

end process;

Page 294: ThietkeIC_Baigiang.v1.2

process (a, b) khác với process (a)

294 http://dce.hust.edu.vn

architecture processa of processa is

begin

process(a, b) -- c = a or b

begin

if (a = '1') or (b='1') then

c <= '1';

else

c <= '0';

end if;

end process;

end processa;

architecture processa of processa is

begin

process(a)

begin

if (a = '1') or (b='1') then

c <= '1';

else

c <= '0';

end if;

end process;

end processa;

Page 295: ThietkeIC_Baigiang.v1.2

295 http://dce.hust.edu.vn

Xảy ra khi có nhiều mạch được đồng bộ bởi cùng một tín hiệu clk. Tuy nhiên do 1. Tín hiệu CLK phải truyền dẫn qua một khoảng cách đáng kể nên

xuất hiện trễ truyền lan

2. Tín hiệu CLK phải đi qua các mạch logic làm biến đổi dạng, làm setup time và hold time thay đổi.

CLK điều khiển việc lấy mẫu dữ liệu bị lệch.

Gợi ý: Hạn chế biến đổi tín hiệu CLK.

Sử dụng đường dẫn riêng, tốc độ cao để truyền dẫn CLK (Liên kết dài)

Page 296: ThietkeIC_Baigiang.v1.2

Tùy theo kiến trúc, có thể có những thanh ghi được đánh địa chỉ truy cập nhưng:

Không tồn tại thực tế về vật lý.

Nằm bên ngoài bộ xử lý.

Ví dụ: Qui định giá trị đặc biệt „0‟ hoặc „1‟ chính là thanh ghi, nhằm hợp nhất phép toán a+b và a+1 (bằng cách coi 1 chính là thanh ghi đặc biệt).

Ví dụ: thanh ghi giá trị trong cache. Thanh ghi này đã nằm trong khối cache rồi, không cần phải tạo lại trong tập thanh ghi nữa.

296 http://dce.hust.edu.vn

Page 297: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Phần V:

• Thiết kế mức đỉnh

• Thiết kế mức thành phần

• Tổng hợp và mô phỏng

• Đặt thiết kế lên FPGA

Page 298: ThietkeIC_Baigiang.v1.2

Bộ xử lý 8 bit, mã nguồn mở

Phiên bản nâng cấp pT-BDC 8x có thiết kế dạng Block Diagram trực quan.

Page 299: ThietkeIC_Baigiang.v1.2

Kiến trúc Harvard. Độ rộng bus dữ liệu, địa chỉ: 8 bit.

Độ rộng bus lệnh: 13 bit.

Lệnh chứa 1 địa chỉ toán hạng.

Có chế độ giảm tiêu thụ năng lượng

Giao tiếp RS232, ngắt

Hệ thống pipeline 4 công đoạn

Thiết kế chi tiết mức phần tử logic cơ bản

299 http://dce.hust.edu.vn

Page 300: ThietkeIC_Baigiang.v1.2

1/2

Là kiến trúc máy tính mà trong đó phân biệt rõ ràng bộ nhớ dữ liệu và bộ nhớ chương trình.

300 http://dce.hust.edu.vn

Von Neumann

Page 301: ThietkeIC_Baigiang.v1.2

2/2

Ngày nay, CPU tốc độ cao ngày này thường kết hợp hai kiến trúc Harvard và Von Neumann.

Bộ nhớ cache trên chip được phân thành cache chương trình và cache dữ liệu. Kiến trúc Harvard được dùng khi CPU truy cập vào cache.

Trong trường hợp không có cache, dữ liệu được lấy từ bộ nhớ chính, mà bộ nhớ chính không được chia thành vùng nhớ chương trình và vùng nhớ dữ liệu. Kiến trúc Von Neumann dùng ở mức truy cập bộ nhớ chính.

301 http://dce.hust.edu.vn

Page 302: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

text

text

UART

Ngắt

Đếm/

Định

thời

Bộ giải mã

PC IR

text RF

Dồn kênh

ALU

Điều khiển

Bộ nhớ

Thao tác với số liệu

ROM RAM

Ngoại vi

Architecture – Kiến trúc Entity – thực thế

CLK OE

Reset RD

ExT WR

Int Standby

IP0 OP0

IP1 OP1

ExDB ExAB

RxD TxD

ROM InsAdr

PP

Ghép nối

Page 303: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Hệ thống

Bộ nhớ RAM/ROM Vi xử lý

Điều khiển Thao tác với số liệu

PC IR

Bộ giải mã

Dồn kênh

ALU

Thanh ghi

Ngoại vi

Ngắt

Đếm/Định thời

UART

Hệ thống

Kiến trúc ngoài

Kiến trúc trong

Ghép nối

CLK OE

Reset RD

ExT WR

Int Standby

IP0 OP0

IP1 OP1

ExDB ExAB

RxD TxD

ROM InsAdr

PP

Page 304: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Tập thao tác gồm 27 phép thao tác, mã hoá bởi 5 bit, điều khiển ALU.

Tập lệnh gồm 50 lệnh với 4 nhóm: lệnh số học, lệnh logic, lệnh chuyển dữ liệu, lệnh điều khiển .

Sử dụng 4 phương pháp địa chỉ toán hạng: tức thì, địa chỉ trực tiếp, địa chỉ thanh ghi, địa chỉ gián tiếp qua thanh ghi.

Thiết kế tập lệnh có vai trò quyết định tới hiệu quả xử lý.

Page 305: ThietkeIC_Baigiang.v1.2

305 http://dce.hust.edu.vn

Opcode Tên lệnh ALU ALF Số chu kì

00000 0000 0000 NOP PASN 00000 1

00000 0000 0001 PWRDN PASN 00000 1

00000 0000 0011 RET PASN 00000 2

00011 1TDR RRRR CMP CMP 00111 1

01100 0PDR RRRR CAZP CAZP 11000 1

10000 VVVR RRRR CLRB CLRB 11000 1

10001 VVVR RRRR SETB SETB 11001 1

1011V VVVV VVVV JC PASN 00000 1(2)

11000 VVVV VVVV MOVI PASN 00000 1

11011 VVVV VVVV XORI XOR 01111 1

1110V VVVV VVVV CALL PASN 00000 2

Page 306: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Tập thanh ghi không lập trình được: SSR, LSR, STACK…

Tập thanh ghi lập trình được: SBUF, Acc…

Tập lệnh không có bit phân biệt địa chỉ thanh ghi và địa chỉ ô nhớ qui định soi gương.

PCON

TCON

ACC IP 0,1

OP 0,1

0x00

0x01

0x02

0x03

0x04

0x05

0x06

0x07

INDIRECT

TEMPLATE

IMODE

TLOAD

PP

INDEX

SBUF

STATUS

0x08.

......

0x0F

0x10.

......

0x1F

Vùng bộ

nhớ không

soi gương

Vùng bộ

nhớ không

soi gương

0x30.

......

0x3F

Vùng bộ

nhớ không

soi gương

0xF0.

......

0xFF

Vùng bộ

nhớ không

soi gương

.........

Vùng bộ nhớ

soi gương

về bank 0

0x20~0x2F

0x00~0x0F

.........

.........

.........

.........

.........

.........

.........

.........

.........

.........

Vùng bộ nhớ

soi gương

về bank 0

0xE0~0xEF

0xF0~0x0F

Vùng 0 Vùng 1 Vùng 7

Thanh ghi

ngầm định Địa chỉ

Page 307: ThietkeIC_Baigiang.v1.2

Tập lệnh không có bit phân biệt địa chỉ thanh ghi và địa chỉ ô nhớ. Ví dụ: lệnh yêu cầu thao tác với địa chỉ 0xEF, là địa chỉ thanh ghi hay bộ nhớ?

Qui định mọi địa chỉ có dạng xx0x.xxxx đều qui về địa chỉ 0000.xxxx Qui tắc soi gương, giải mã lệnh nhanh trong 1 chu kỳ lệnh, tốn không gian địa chỉ.

Qui định duy nhất địa 0000.xxxx là địa chỉ thanh ghi tiết kiêm không gian địa chỉ, khó giải mã, có thể tốn nhiều chu kỳ đồng hồ mới xác định được địa chỉ.

Địa chỉ cuối cùng = thông tin trên mã lệnh (DI) [ kết hợp giá trị trong thanh ghi địa chỉ (WO) ]

Tập lệnh chỉ là qui định mã bit, nhưng có vai trò hết sức quan trọng trong kiến trúc và hiệu năng của bộ xử lý.

307 http://dce.hust.edu.vn

Page 308: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

PC ROM IR Giải mã SSR

LSR

ALU

Bộ

nhớ

(1)

Cờ

Địa chỉ lệnh

Lệnh Cờ

Chốt

Chọn

toán

hạng

Mã thao tác

Kết quảToán hạng

nguồn

Địa chỉ gián tiếp

qua thanh ghi

Điều khiển rẽ nhánh

Điều

khiển

ngắt

Đếm/Định thời

UART

Thanh ghi

(2)

Ngắt ngoài

Đếm/Định thời

ngoài

TxD

RxD

Page 309: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Nhận lệnh: PC, IR

Giải mã lệnh:tuần tự, rẽ nhánh, ngắt.

Thực hiện lệnh: nhận toán hạng, thực hiện.

Cất toán hạng: tín hiệu cho phép chốt từ bộ giải mã lệnh.

Lệnh 1

Lệnh 2

Lệnh 3

Lệnh 4

Lệnh 5

Lệnh 6

Lệnh 7

Lệnh 11

Lệnh 12

FI DI EI WO

FI DI EI WO

FI DI EI WO

FI DI

FI DI EI WO

FI DI

FI

FI DI EI WO

FI DI EI WO

1 2 3 4 5 6 7 8 9 10 11 12

Page 310: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

OP0(7:0)CE

Q(7:0)CLK

D(7:0)

PR

OP0Reg

reg_cpn

CE

DOUT(7:0)

CLK

PTOUT(7:0)DIN(7:0)

PTIN(7:0)

PT0Reg

portsreg

PTIN(7:0)PTOUT(7:0)

InsAdr(10:0)

MCLK

CE

Q(7:0)CLK

D(7:0)

ACCReg

reg08cnn

MCLK

MCLK

IB0(7:0)

OB(7:0)

IB1(7:0)

IB2(7:0)

IB3(7:0)

IB4(7:0)

SEL(2:0)

SEL_FirstOpr

mux08x05

PR

C(1

0:0

)

Standby

Res et

Res et

ALF(4:0)

ExAB(7:0)

MCLK

MCLK

MCLK

Res et

External ROM ROM External ROM

PWRDN

PRC(10:0)

CLK

INS(8:0)

PWRDN

Reset

STR(7:6)

CALL

RET

PRPC

IntSel (1:0)

ActInt

PCReg

pccntr

Chon kenh 4 loai so lieu toi ALU

INS(12:0)

ROM(12:0)

ALU(7:0)STATUS(7:0)

CE

CLK

Reset

STA(2:0)

ReF(2:0)

RetI

Status_Reg

statusreg

MCLK

STATUS(7:0)

STATUS(7:6)MCLK

Res et

EndCy c

LnWERAM

PWRDN

LALF(4:0)

STATUS(7:0)

PWRDN

INS(8:0)

LCEACC

LCESTA

CEACC

CESTA

CEPT0

LCETL

LCEPT0

STATUS(3:0)

CE

Q(7:0)CLK

D(7:0)

Index_Reg

CEIDX

MCLKINDEX(7:0)

INDEX(7:0)

From ALU(7:0)

LCESB

LCEIDX

LCETMP

EndCy c

ALU(7:0)

STA(2:0)

ALF(4:0)

DI(7:0)

CI

SeOpr(7:0)

ZI

PI

INS(7:5)

PO

PL

ArithmeticLogicUnit

alu

INS2(7:0)

AB(2:0)

AB(2:0)

From ALU(7:0)

MCLK

CETMPCE

Q(7:0)CLK

D(7:0)

TemplateReg

IB0(7:0)OB(7:0)

IB1(7:0)

S

SEL_SecondOpr

mux08x02

From Ac c (7:0)

From Tem plate(7:0)

SelSeOpr

LSelSeOpr

STATUS(0)

STATUS(1)

ST

AT

US

(7:6

)

Co trang thai moiSTA(2:0)

PRPC

STA(2:0)

CALLINS

PRPC

RETINS

CALLINS

RETINSCE

Q(12:0)CLK

D(12:0)

RST

IRReg

REG13CRN

LCEACC

LCESTA

LCEPT0

LCEIDX

LCETMP

CEACC

CESTA

CEPT0

CEIDX

CETMP

Reset

CLK

LOSEnaOSEna

LCESB

LCEIM

CESB

CEIMLCETM

LCEPMCETM

CEPM

LCETLCETL

latchsignalreg

LSR

CEACC

CESTA

CETL

CEPT0

CESB

CEIDX

CETMP

MCLK

Res et_INS

AB(2:0)LAB(2:0)

LSelSeOpr

LALF(4:0)

SEL(2:0)LSEL(2:0)

SelSeOpr

ALF(4:0)

ResetCLK

INS(7:0)INS2(7:0)

selsignalreg

SSR

LAB(7:0)

LSEL(2:0)SelSeOpr

ALF(4:0)

c learMCLK

Reset

CLK

ExtReset

InReset

resetsyn

Res etRes et_INS

ExReset

INS2(7:0)INS(7:0)

SEL(2:0)

IP_DB(7:0)

Reset_syn

PTOUT(7:0)

IB6(7:0)

LOSEnaOSEna

Out Space

STATUS(2)

IB1(7:0)

OB(7:0)IB2(7:0)

IB3(7:0)

IB4(7:0)

IB5(7:0)

IB6(7:0)

IB7(7:0)

SEL(2:0)

Sel_SpecialRegs

MUX08X07

IB6(7:0)

MCLK

From ALU(7:0)

CESB

LCEIMCEIM

IM(7:0)

ADR(7:0)

ALF(4:0)

CLK

PWRDN

IDX(7:0)

Reset

INS(12:0)

Sel (2:0)

CEACC

CESTA

CEPT0

CEIDX

CETMP

EndCyc

SelSeOpr

Flag(2:0)

CALLINS

PRPC

RETINS

OSEna

ActInt

CEIM

CESB

CePM

CeTM

RetI

JumpEna

nRERAM

nWERAM

CETL

DeM

decoder

CETL

INS2(7:5)

STATUS(3)

STATUS(3:0)

SelSeOpr

OP1(7:0)CE

Q(7:0)CLK

D(7:0)

PR

OP1Reg

reg_cpn

MCLK

Res et

CeOp1

CeOP0

CLKQ(7:0)

D(7:0)

IP1Reg

reg_nnn

IP1(7:0)

MCLK

IP1DB(7:0)

In Space

IB0(7:0) OB(7:0)

IB1(7:0)

S(2:0)

IOmux

Mux08x08CLKQ(7:0)

D(7:0)

IP0Reg

reg_nnn

IP0(7:0)

MCLKIP0DB(7:0)

IP_DB(7:0)

INS2(2:0)

I O0

S(2:0) O1

IODemux

Demux08x01

OSEna

INS2(2:0)

CeOp0

CEOp1

PTOUT(7:0)

From ALU(7:0)

CE

Q(7:0)CLK

D(7:0)

PR

PCONReg

reg_cpn

PM(7:0)

Res et

MCLK

CePM

Dieu k hien c he do I/Oc ua c ong Paral le l

Cac tham ghi ngam dinh, chi docde dieu khien ngat, cong....

CLK ActInt

IntSource(1:0)

Reset

IM(7:0)

RetI AfterInt

JumpEna

AssertInterrupt

assint

IM(7:0)

MCLK

Res et

Ac tInt

Ac tInt

IntSourc e(1:0)

IntSourc e(1:0)

Ac tInt

LCeTM

LCePM

RetI

RetI

IM(7:0)

CeIM

MCLK

INT

Res et

ALU(6:0) IM(7:0)

ActInt

CLK

CeIM

ExInt

IntSource(1:0)

Reset

RxDReadly

T_CF

TxDReadly

IModeReg

intreg

Res et

RetI

ReF(2:0)

AfterIntc lear

c lear

­

T_CF

ExTC

InCLK

LoadD(7:0)

Reset

FCLK

TCON(5:0)

TimerCounter

tcmodule

T_CF

ExTMCLK

Res et

TLoad(7:0)

TLoad(7:0)

CLKMCLK

CLK inCLK

exCLK

ClockGen

clockdiv

RawCLK

RawCLK

CE

Q(7:0)CLK

D(7:0)

R

TCONReg

MCLK

CeTM

Res et

TCTL(7:0) TCTL(5:0)CETM

CEPM

M( M(6:0)From ALU(7:0)

J um pEna

J um pEna

EMCLK

LnRERAM

ASet

CLK

D1

D2

Q1

Q2

AD(7:0)

AQ(7:0)

ALU(7:0)

Din(7:0)

Dout(7:0)

RR(7:0)

emctrl

LnWERAM

LnRERAM

MCLK

EMCLK

CLK16x

Dout(7:0)

Din(7:0)

Reset

Rx Tx

WS

MCLK

RxInt

TxInt

UART

RxDTxD

RxInt

TxInt

Res et

T_CF

LExAB(7:0)

CE Q(2:0)

CLK

D(2:0)

FStore

SaveFlags

ReF(2:0)AfterInt

MCLK

STA(2:0)

Advance Module

LAB(2:0)LAB(7:0)

Res et

CE Q(7:0)

D(7:0)

RST

CLK

TLoadReg

MCLK

RAM(7:0)

LnRD

LnWRnRD

nWR

From ALU(7:0)Dout(7:0)

LDout(7:0)

RAM(7:0)

Din(7:0)

EMCLK

nOE

CE

Q(7:0)CLK

D(7:0)

PR

OP0Reg

reg_cpn

Page 311: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

INS(12:0)

IDX(7:0)

ADR(7:0)

Sel(2:0)

ALF(4:0)

INS(12:5)

IMPLICIT

STANDARD

IMMEDIATE

BITWISE

subgroup

Phan_nhom_lenh

INS(12:5)

IMPLICITIMPLICIT

CLK

INS(4:0)

PWRDN

Reset

ReadP

WriteP

ModPModT

SxC

SxP

SxZ

RetI

Retx

implicit_decode

Giai_ma_IMPLICIT

PW RDN

Reset

CLK

INS(4:0)

INS

(12:0

)IN

S(1

2:0

)

LPWRDN

INDEX(7:0)

ADR(7:0)INS(4:0)

addressdecoder

Tao d ia ch i cho thanh ghi Nguon va Dich

INS(4:0) LADR(7:0)

IMMEDIATE

MOVA Sel(2:0)

ISEna

OSEna

Impl icit

Standard

nReRAM

BitWise

nZeroHighAdr

selmux

IMMEDIATE

CESTA

CEACC

nW ERAM

CETL

CEPT0

CEIDX

CESB

CETMP

PWRDNENDCYC

CLK

JumpEnable

PRPCSkipNext

ActIntend_of_ins

IP_PC

EndCyc

CLK

INS_5

STANDARD

IMMEDIATE

CESTA

CEACC

WERAM

ADR(2:0)

CEPT0

CEIDX

CETMP

ISEna

BITWISE

CESB

CEIM

CETL

nZerohighAdr

LatchReg

INS(5)

STANDARD

IMMEDIATE

CESTA

CEACC

WERAM

CETL

CEPT0

CEIDX

CESB

CETMP

ALF(4:0)

IMMEDIATE

INS(11:7)

STANDARD

BITWISE

Giai_ma_toan_tu

alu_function

IMMEDIATE

STANDARD

INS(11:7)

CLK CLK

INS(12:0)

IMMEDIATE

STANDARD

Chon

so lieu In

SelSeOprINS(6)

Flag(2:0)

Flag(2:0)

PRPC

5 nhom lenh: + IMD,IMP, STD + BRANCH

Chon toan tu cho ALU

Bo phan kenh

tin hieu chot ket qua phep toan cho ALU

M OVA<= ST ANDARD and

(not INS(11)and not INS(10)

and not INS(9) and not INS(8

and not INS(7));

Operand1_is_Acc

INS(12:7)

INS(12:9)

PWRDN

Flag(2:0)

JumpEnableRET

CALL

SC

SP

SZ

INS0

SkipNext

ActInt

Giai_ma_BRA_IMP

specialins

CALLINS

Dieu khien

re nhanh

RETINSLRETx

Dia_chi_thanh_ghi

Chon_kieu_toan_hang1

IMMEDIATE

Lenh IMMEDIATE luonco toan hang thu hai la Acc

ReadP

WriteP

ReadP

OSEnaWritePOut Space Enable

ReadP

WriteP

CEIMCEIM

INS(12:9)

INS(0)

BITWISE

BITWISE

BITWISE

MOVA

ActInt

ActIn t

Cong dieu khien

ngam dinh,writeonly

CePMModP

CeTMModT

RetIRetI

Dieu khien phuc hoi co

Z,C,P va trang thai ngat trong thanh ghi IM

ActIn t

Impl icit

JumpEnaJumpEnable

JumpEnable

Standard

nRERAM

nZeroHighAdr

nZeroHighAdr

BitWise

Giải mã địa

chỉ

Phân loại

lệnh

Giải mã tín hiệu

chốt

Giải mã tín hiệu

đ/k chọn t/h

Giải mã rẽ

nhánh

Điều khiển

rẽ nhánh

Giải mã mã thao

tác

Giải mã

đ/k khác

Page 312: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

SECHALF

ENDCYC

JumpEnable

FirstCyc

CLK

SkipNext

C LK

QD

DFF

ActInt

ActIn t

ENDCYC

PWRDN PRPC

Lệnh SecHalf EndCyc FirstCyc PC IR

Lệnh tuần tự 0 1 0 Cộng 1 Chốt lệnh

Lệnh rẽ nhánh

hoặc ngắt

CK1 0 0 1 Chốt địa chỉ Không chốt

CK2 1 1 0 Cộng 1 Chốt lệnh

Page 313: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Bộ

dồn kênh

22 đường

8 bit

Hàm logic 0

Hàm logic 1

Hàm logic 3, 4,

5, 6, 10, 11

Bộ cộng

Hàm logic 27

Hàm logic 25

Toán hạng nguồn…………...

…………...

Giải mã

bộ cộng

Mã thao tác

Toán hạng đích

Xác định

trạng thái

Xác định

thao tác thay

đổi trạng thái

Bộ

dồn kênh

2 đường

1 bit

Cờ

Cờ trạng

thái trước

C‟‟

C‟,Z‟,P‟

CE, ZE, PEC, Z, P

Page 314: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Đếm/định thời: dùng nguồn xung định thời bên trong hoặc nguồn xung đếm ngoài

Module UART: phục vụ truyền, nhận tiếp, tốc độ boud thay đổi được, khung truyền cố định

Ngắt: 3 vector ngắt

4 cờ ngắt: ngắt ngoài, ngắt đếm/định thời, ngắt truyền và nhận nối tiếp

Cờ ngắt ngoài và đếm/đinh thời xoá bằng phần cứng, cờ nối tiếp xoá bằng phần mềm

Chống xung đột điều khiển với lệnh rẽ nhánh

Page 315: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

IM(7:0)

IntSource(1:0)

CLK

Reset

ActInt

IM(4)

IM(1)

IM(5)

IM(2)

IM(6)

IM(3)IM(7)

IM(7

:0)

IM(0)

Co mot ngat duoc goi

Cho phep ngat

LProcessingInt

SPro

TPro

EPro

IntSource(1)

IntSource(0)Reset

CLKQ

D

Reset Set

U8

CLK

CLK

RetI

Reset

CLK Q

D

AfterActInt

CLK AfterInt

RetICLK Q

D

CLK

S0

S1

Cal lIn t

CLK PSynLevel

PEdge

DetectPEdge

PEdge2Level

JumpEna

CLK

S0

S1

LActInt

TxF RxF TF EF SE TE EE IE

Co ngat Cho phep ngat

Cho phep ngat toan cuc

7 6 5 4 3 2 1 0

IM

Phân xử ngắt

Cho phép ngắt

Xử lý xung đột điều khiển

Điều khiển ngắt

Page 316: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

D1

D2

CLK

Q1

Q2

ASet

C L K Q

D

RDLatch

DFF

C L K Q

D

U2

DFF

AD(7:0)

AQ(7:0)

C E

Q (7 :0 )C L K

D (7 :0 )

ExABLatch

reg08cnn

CLK

C L K Q

D

WRLatch

DFF

C E

Q (7 :0 )C L K

D (7 :0 )

FWMReg

reg08cnn

CLK

ALU(7:0)

Dout(7:0)

Din(7:0)

DelR

IB 0 (7:0 )

O B (7:0 )

IB 1 (7:0 )

S

MUX08X02

RR(7:0)

LDout(7:0)

Page 317: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Yêu cầu tài nguyên

FPGA Cổng IO LUT Flip Flop Fmax

XC2S100-5PQ208 89 / 144 62% 712 / 2400 29% 320 / 2400 13% 26 MHz

XC2S30-5PQ208 89 / 136 75% 612 / 864 70% 316 / 864 36% 26 MHz

XC2S50E-7TQ144 89 / 102 82% 711 / 1536 46% 318 / 1536 20% 34 MHz

XC2S100E-6PQ208 89 / 146 61% 712 / 2400 29% 318 / 2400 13% 31 MHz

XC2S300E-6FG456 89 / 329 27% 764 / 6144 12% 329 / 6144 5% 31 MHz

Sử dụng FPGA: XC2S100-5PQ208

LUT: Look-Up Table

Page 318: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Cấu hình FPGA để hoạt động theo thiết kế thông qua cổng JTAG

Kiểm tra quá trình cấu hình FPGA

Ghép nối chip với bộ nhớ ngoài

Thiết kế các jumper tương ứng với các chân vào ra

Xây dựng sẵn một số thiết bị vào ra cơ bản để kiểm tra hoạt động của phần mềm như DIP, Led…

Bo mạch phát triển đã thực hiện tất cả các ghép nối phần cứng cơ bản.

Người sử dụng chỉ cần nạp chương trình vào ROM để sử dụng chip

Page 319: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Đồng thiết kế phần cứng - phần mềm: việc thiết kế phần cứng và phần mềm diễn ra song song

Sử dụng phần mềm để kiểm thử hoạt động của chip

Các giai đoạn phát triển phần mềm Viết chương trình từng bit một.

Sử dụng chương trình dịch pT-BDC Compiler

Page 320: ThietkeIC_Baigiang.v1.2

Bộ môn kỹ thuật máy tính

Chương trình

kiểm tra xử lý

ngắt ngoài

Page 321: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Bộ xử lý mã nguồn mở

321 http://dce.hust.edu.vn

Page 323: ThietkeIC_Baigiang.v1.2

Vi điều khiển nhúng 8 bit có cấu trúc RISC.

Được tối ưu phát triển cho các họ FPGA của Xillinx như Spartan 3, Virtex II và Virtex II Pro.

Vi điều khiển PicoBlaze được tối ưu về mặt hiệu suất và chi phí phát triển thấp.

Mã nguồn mở VHDL, lõi mềm.

PicoBlaze FPC được hỗ trợ bởi các công cụ assembler và IDE lập trình, giả lập, etc , và bởi các công cụ của Xilinx như System Generator hay ISE.

323 http://dce.hust.edu.vn

Page 324: ThietkeIC_Baigiang.v1.2

16 thanh ghi dữ liệu chức năng chung có độ rộng 8 bit.

Lưu trữ được 1K lệnh trong chương trình có thể lâp trình được trong chip và tự động nạp khi cấu hình FPGA hay khi khởi động FPGA.

ALU với các cờ CARRY và ZERO.

Một bảng RAM 64 byte.

256 đầu vào và 256 đầu ra dễ dàng có thể mở rộng thêm.

Stack cho phép gọi lồng 31 lần CALL/RETURN.

324 http://dce.hust.edu.vn

Page 325: ThietkeIC_Baigiang.v1.2

Predictable performance, luôn luôn dùng 2 xung nhịp hệ thống cho một câu lệnh, có thể đạt tới 200 MHz hoặc 100 MIPS trong Virtex – II Pro FPGA.

Đáp ứng ngắt nhanh; worst-case 5 clock cycles.

Được tối ưu cho cấu truc Spartan – 3, Virtex II, và Virtex II Pro FPGA của Xilinx chỉ chiếm 96 slices và 0.5 tới 1 block RAM.

Hỗ trợ mô phỏng tệp lệnh assembler.

325 http://dce.hust.edu.vn

Page 326: ThietkeIC_Baigiang.v1.2

326 http://dce.hust.edu.vn

Điều

khiển ngắt

8

OUT_PORT

Đ/k

luồng

ctrình

CỜ

ZERO &

CARRY

ALU

Bộ nhớ

lưu cờ

ngắt

Thanh

ghi PC

Stack

của PC

8

8

8

8

8 PORT_ID Điều

khiển địa

chỉ cổng READ_STROBE

WRITE_STROBE

NGẮT

10 10

ĐỊA CHỈ

10 Điều khiển

hoạt động &

Giải mã lệnh

RESET

CLK

18 LỆNH

8

8

8

8

IN_PORT

DỮ LiỆU HẰNG

Từ 16 tới 32

thanh ghi 8bit

Bộ nhớ

chương trình

ROM/RAM

1024 words

10

ĐỊA CHỈ

Page 327: ThietkeIC_Baigiang.v1.2

1/3

Chức năng chuyển mạch ở Front panel và chức năng hiện thị trên Set Top Box.

Link layer trong IEEE 1394 Interface.

Bộ vi điều khiển trong Compact Flash Programming engine.

DECT Radio/Repeater.

327 http://dce.hust.edu.vn

Page 328: ThietkeIC_Baigiang.v1.2

2/3

Điều khiển lập trình cho PCI board.

Điều khiển truyền thông.

Thực hiện tiền xử lý cho các bộ xử lý network.

Bộ điều khiển động cơ.

Điều khiển các nguồn cấp lập trình được.

Là một thành phần của Media Access Controller

Vi điều khiển trong các thiết bị broadcast video.

328 http://dce.hust.edu.vn

Page 329: ThietkeIC_Baigiang.v1.2

3/3

329 http://dce.hust.edu.vn

http://youtu.be/hbtsz3m1wgQ http://youtu.be/3hMara9qc-E http://youtu.be/88FPBOOwSIg

Page 330: ThietkeIC_Baigiang.v1.2

Một số kit tại CSLab.

Hướng dẫn phát tín hiệu VGA bằng FPGA. http://www.fpga4fun.com/PongGame.html

FPGA Based VGA driver and Arcade game. http://static.armandas.lt/res/fpga_based_vga_driver_and_arcade_game.pdf

Hướng dẫn sử dụng Altera Quatus

Hướng dẫn sử dụng Altera Quatus, Xillinx ISE, Actel Libero

Hướng dẫn sử dụng kit Spartan II LC VN

330 http://dce.hust.edu.vn

Page 331: ThietkeIC_Baigiang.v1.2

Group project for our FPGA class. We took 80 phototransistors which sent signals out to the DE2 board via 8-bit parallel-to-serial registers (165) and then sent the signals out to an 8x10 array of LEDs via 8-bit serial-to-parallel shift registers (595).

http://youtu.be/LCIjWp7LDl8

Guild to build.

http://youtu.be/no2_M_b059g

http://www.elektroda.pl/rtvforum/topic944484.html

331 http://dce.hust.edu.vn

Page 333: ThietkeIC_Baigiang.v1.2

Bộ môn Kỹ thuật Máy tính, Viện Công nghệ thông tin và Truyền thông, ĐHBKHN

www.dce.hust.edu.vn

Msc. Nguyễn Đức Tiến

[email protected]

+84-91-313-7399

The End