Chương iii 1

77
06.06.22 1 Thiết kế với linh kiện lập trình A. Linh kiện lập trình

description

vhdl language

Transcript of Chương iii 1

Page 1: Chương iii   1

08.04.23 1

Thiết kế với linh kiện lập trình

A. Linh kiện lập trình

Page 2: Chương iii   1

08.04.23 2

A. Linh kiện lập trình

Page 3: Chương iii   1

08.04.23 3

Phân loại ROM (Read Only Memory) PAL (Programmable Array Logic) GAL (Generic Array Logic) CPLD (Complex Programmable

Logic Device) FPGA (Field Programmable Gate

Array)

Page 4: Chương iii   1

08.04.23 4

ROM

Page 5: Chương iii   1

08.04.23 5

PAL Cụm từ Programmable Array Logic (PAL) dùng để mô tả một họ thiết bị logic có

khả năng lập trình để thực hiện các các cổng logic trong mạch số được giới thiệu bởi Monolithic Memories, Inc. (MMI) vào năm 1978.

PAL bao gồm có lõi PROM (programmable read-only memory) cộng thêm cổng logic đầu ra.

Page 6: Chương iii   1

08.04.23 6

PAL PAL chỉ có thể lập trình một lần

"one-time programmable" (OTP).

Hình : thiết bị lập trình đơn giản (họ PAL)(phần từ lập trình ở đây là các cầu chì)

Page 7: Chương iii   1

08.04.23 7

PAL PAL có thể lập cấu hình bằng tay

hoặc dùng ngôn ngữ (Ngôn ngữ mô tả phần cứng - hardware descriptive language “HDL”), ví dụ như: ABEL, CUPL, hoặc PALASM.

Để nạp cấu hình cho PAL có thể dùng các bộ nạp. Ví dụ: bộ nạp Model 60A của Data I/O.

Page 8: Chương iii   1

08.04.23 8

GAL GAL (Generic Array Logic) được giới thiệu

bởi Lattice Semiconductor vào năm 1985. GAL là một loại chip lập trình được có thể

thay thế cho các vi mạch 74xx và 40xx. Thiết bị này có các tính chất giống như

PAL, nhưng có thể xóa và lập trình lại. Do đó bạn có thể thay đổi thiết kế một cách linh hoạt và mềm dẻo, mật độ tích hợp của chip cao hơn.

Page 9: Chương iii   1

08.04.23 9

GAL Ngoài ra GALs còn giúp cho chúng ta

thu gọn kích thước của bản mạch thiết kế, tăng khả năng giữ bản quyền.

GAL có thể lập trình bởi Bộ nạp hoặc nạp trực tiếp trong mạch.

Một dạng tương tự GAL là PEEL (programmable electrically erasable logic) được phát triển bởi International CMOS Technology (ICT) corporation.

Page 10: Chương iii   1

08.04.23 10

GAL Hiện nay có hai series GALs phổ

biến đó là GAL16V8 và GAL20V8.

Hình: Lattice GAL 16V8 và 20V8

Page 11: Chương iii   1

08.04.23 11

GAL Phần mềm lập trình GAL miễn phí

có cả cho các bạn dùng hệ điều hành Windows và Linux. Ví dụ: GAL® programmer GALBlast Version 1.6

Page 12: Chương iii   1

08.04.23 12

CPLD CPLD (Complex Programmable Logic

Device). Đây là thiết bị logic lập trình có độ phức tạp nằm giữa PALs và FPGAs, về cấu trúc thì có tính chất của cả hai loại. Cơ sở (phần tử cơ bản của CPLD) là các “macro cell” – gồm flipflop, bộ đệm ba trạng thái và các dây nối đóng vai trò như cổng vào-ra của cell.

PALs và GALs chỉ có kích thước và dung lượng nhỏ, khoảng một vài trăm cổng. Trong khi đó CPLDs có thể là hàng ngàn cổng, thậm trí là hàng trăm ngàn cổng logic.

Page 13: Chương iii   1

08.04.23 13

Ví dụ: CPLD họ MAX7000

Altera MAX 7000-series CPLD có 2500 cổng.

Page 14: Chương iii   1

08.04.23 14

CPLD Một vài loại CPLDs có thể nạp bằng

PAL programmer, nhưng phương pháp này trở nên bất tiện đối với các chíp hàng trăm chân

Phương pháp thứ hai là lập trình trên mạch in (giống như AVR).

CPLDs không cần bộ nhớ cấu hình ROM ngoài (khác với FPGA nhỏ).

Page 15: Chương iii   1

08.04.23 15

CPLD Lưu ý là mỗi hãng có một giao thức

riêng cho phương pháp nạp thứ hai. Ví dụ Lattice Semiconductor gọi là "in-system programming".

Có một chuẩn chung cho các hãng đó là: Joint Test Action Group (JTAG).

Page 16: Chương iii   1

08.04.23 16

Một số nhà cung cấp CPLD Altera Atmel Cypress Semiconductor Lattice Semiconductor Xilinx

Page 17: Chương iii   1

08.04.23 17

FPGA FPGA (Field-programmable gate array) Trong khi PALs đã phát triển thành GALs

và CPLDs, thì một hướng phát triển khác cũng xuất hiện. Các thiết bị này dự trên công nghệ gate-array và được là field-programmable gate array (FPGA).

Ví dụ những FPGAs là 82s100 và 82S105 được đưa ra bởi Signetics vào những năm 70.

Page 18: Chương iii   1

08.04.23 18

FPGA FPGAs thường được lập trình sau khi đã

hàn vào mạch, tương tự như CPLD lớn. Phần lớn FPGAs được cấu hình từ bộ nhớ

không đổi (volatile), và phải nạp vào thiết bị khi bật nguồn hoặc khi có chức năng khác.

Cấu hình có thể lưu ở PROM hoặc EEPROM. Nhiều loại EEPROM có thể lập trình bởi in-system programmable (ví dụ như JTAG).

Page 19: Chương iii   1

08.04.23 19

FPGA FPGAs và CPLDs là những lựa chọn

rất tốt cho các thiết kế. Việc lựa chọn FPGA hay CPLD phụ thuộc vào độ phức tạp của mạch, tính kinh tế, và cũng có thể là kinh nghiệm của người thiết kế.

Page 20: Chương iii   1

08.04.23 20

Ví dụ: FPGA của Altera

Altera FPGA 20,000 cells

Page 21: Chương iii   1

08.04.23 21

So sánh FPGA và ASIC Chúng ta cũng cần phân biệt FPGAs và ASIC

(application-specific integrated circuit). Nói chung FPGA chậm hơn so với ASIC.

ASIC: Thiết kế ứng dụng -> Thiết kế mạch logic -> Mô phỏng -> Kiểm tra chức năng codes -> P&R (Place & Route bất kỳ) -> Làm wafer (silicon) -> Test prototype (nếu lỗi quay lại sửa bản thiết kế logic) -> Sản xuất hàng loạt (dạng chip) -> Triển khai ứng dụng trên board.

Page 22: Chương iii   1

08.04.23 22

So sánh FPGA và ASIC FPGA: Nhà sản xuất: Thiết kế platform của

FPGA -> Mô phỏng + Kiểm tra chức năng của platform -> P&R -> Làm wafer -> Sản xuất chíp FPGA hàng loạt + Tool hỗ trợ => Người sử dụng: Thiết kế ứng dụng -> Thiết kế mạch logic -> Mô phỏng -> Kiểm tra chức năng code -> P& R (theo quy định của platform) -> Đổ codes lên platform FPGA -> triển khai ứng dụng trên board.

Page 23: Chương iii   1

08.04.23 23

So sánh FPGA và ASIC Kết luận: Với ASIC chúng ta phải

làm từ A đến Z, chúng ta có thể tùy chọn công nghệ chế tạo chip và chip được chế tạo với một họăc một số ứng dụng đã được định nghĩa từ trước.

Page 24: Chương iii   1

08.04.23 24

So sánh FPGA và ASIC FPGA thực chất là một platform có

thể cấu hình được (configurable) được thiết kế sẵn với mục đích sản xuất hàng loạt và dành người dùng có thể tùy ý thiết kế các ứng dụng khác nhau (tất nhiên là bị giới hạn bởi những đặc tính của chip FPGA).

Page 25: Chương iii   1

08.04.23 25

Ứng dụng của FPGAs Bộ xử lý tín hiệu số DSP (digital

signal processor), vô tuyến định nghĩa bởi phần mềm (software-defined radio), hàng không và quân sự, các khai báo mẫu ASIC (ASIC prototyping), ảnh y tế, máy tính…

Page 26: Chương iii   1

08.04.23 26

Ví dụ sử dụng FPGA trong TK

Page 27: Chương iii   1

08.04.23 27

FPGA thiết kế và lập trình Để xây dựng các mạch điện sử dụng

FPGA có thể dùng Ngôn ngữ mô tả phần cứng HDL hoặc sơ đồ nguyên lý (vẽ mạch – graphics editor).

Sau khi thiết kế xong, các mạch điện được mô phỏng và kiểm tra kết quả.

Kết quả cuối cùng là file cấu hình của FPGA.

Page 28: Chương iii   1

08.04.23 28

FPGA thiết kế và lập trình Để đơn giản khi thiết kế một hệ

thống lớn thì sử dụng các thư viện có sẵn (thư viện là các mạch được thiết kế trước - predefined circuits, thường gọi là IP cores).

Thư viện do người dùng thiết kế, hoặc có thể do hãng cung cấp với bản quyền cho phép.

Page 29: Chương iii   1

08.04.23 29

Hãng cung cấp FPGA Xilinx và Altera là hai hãng cung

cấp FPGA hàng đầu hiện nay. Ngoài ra còn có các hãng: Lattice

Semiconductor, Actel, Atmel

Page 30: Chương iii   1

08.04.23 30

So sánh và lựa chọn công cụ Xilinx Altera

Page 31: Chương iii   1

08.04.23 31

B. Ngôn ngữ mô tả phần cứng (Hardware description language)Qúa trình thiết kế:

Đầu vào thiết kê: HDL(VerilogHDL, VHDL, Sơ đồ nglý…)

Biên dịch

Kiểm tra chức năng

Thỏa mãn yêu cầu

Lập trình thiết bị

yes

no

Page 32: Chương iii   1

08.04.23 32

Phương pháp TK truyền thống Đó là: Tối thiểu hóa hàm Boolean

và dùng sơ đồ các phần tử. Nhược điểm của phương pháp thiết

kế truyền thống là bị giới hạn về độ phức tạp và chỉ có thể thiết kế được các hệ thống chứa vài ngàn phần tử.

Page 33: Chương iii   1

08.04.23 33

Ưu điểm của HDL Cho phép thiết kế các hệ thống

phức tạp. Rất mềm dẻo trong thiết kế (thay

đổi các tham số một cách dễ dàng).

Page 34: Chương iii   1

08.04.23 34

Ngôn ngữ mô tả phần cứng Verilog HDL VHDL

Page 35: Chương iii   1

08.04.23 35

VHDL VHDL là ngôn ngữ mô tả phần

cứng cho các mạch tích hợp tốc độ rất cao.

Là một loại ngôn ngữ được phát triển dùng cho chương trình VHSIC (Very High Speed Integraded Circuit) của bộ quốc phòng Mỹ.

Page 36: Chương iii   1

08.04.23 36

Ưu điểm của VHDL Tính phổ biến: VHDL được phát

triển dưới sự bảo trợ của chính phủ Mỹ và hiện nay là một tiêu chuẩn của IEEE. VHDL được sự hỗ trợ của nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống.

Page 37: Chương iii   1

08.04.23 37

Ưu điểm của VHDL Thứ hai là khả năng hỗ trợ nhiều công

nghệ và phương pháp thiết kế. Ví dụ phương pháp thiết kế từ trên xuống, hay từ dưới lên dựa vào các thư viện sẵn có. VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ hay không đồng bộ, sử dụng ma trận lập trình được hay sử dụng mảng ngẫu nhiên.

Page 38: Chương iii   1

08.04.23 38

Ưu điểm của VHDL Thứ ba là tính độc lập với công nghệ:

VHDL hoàn toàn độc lập với công nghệ chế tạo phần cứng. Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng có thể được chuyển thành các bản tổng hợp mạch khác nhau tuỳ thuộc công nghệ chế tạo phần cứng, do đó mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế.

Page 39: Chương iii   1

08.04.23 39

Ưu điểm của VHDL Thứ tư là khả năng mô tả mở rộng:

VHDL cho phép mô tả hoạt động của phần cứng từ mức hệ thống cho đến mức cổng. VHDL có khả năng mô tả hoạt động của hệ thống trên nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức.

Page 40: Chương iii   1

08.04.23 40

Ưu điểm của VHDL Thứ năm là khả năng trao đổi kết

quả: Vì VHDL là một tiêu chuẩn được chấp nhận, nên một mô hình VHDL có thể chạy trên mọi bộ mô tả đáp ứng được tiêu chuẩn VHDL. Các kết quả mô tả hệ thống có thể được trao đổi giữa các nhà thiết kế sử dụng công cụ thiết kế khác nhau nhưng cùng tuân theo tiêu chuẩn VHDL.

Page 41: Chương iii   1

08.04.23 41

Ưu điểm của VHDL Thứ sáu là khả năng hỗ trợ thiết kế

mức lớn và khả năng sử dụng lại các thiết kế: VHDL được phát triển như một ngôn ngữ lập trình bậc cao, vì vậy nó có thể được sử dụng để thiết kế một hệ thống lớn với sự tham gia của một nhóm nhiều người.

Page 42: Chương iii   1

08.04.23 42

VHDL Chúng ta bắt đầu làm quen với

VHDL bằng 1 ví dụ đơn giản: thiết kế cổng AND có 2 đầu vào a, b; đầu ra c.

Thiết kế bằng đồ họa:Cổng vào a

Cổng vào b Cổng ra c

c = a & b

Page 43: Chương iii   1

08.04.23 43

Cổng logic (mạch AND) Kết quả mô phỏng (chu kỳ a: 200

ns, b : 300 ns)

Page 44: Chương iii   1

08.04.23 44

Page 45: Chương iii   1

08.04.23 45

Mô tả cổng AND bằng VHDL Mô tả VHDL luôn

bắt đầu bằng khai báo thư viện.

Tiếp theo là khai báo thực thể entity.

Trong entity có khai báo cổng vào/ra.

Từ khóa entity, port, in, out.

Page 46: Chương iii   1

08.04.23 46

Kiến trúc cổng AND Khai báo kiến trúc

bắt đầu bằng từ khóa architecture, begin-end.

Thực hiện câu lệnh gán (<=) c <= a and b.

Từ khóa end.

Page 47: Chương iii   1

08.04.23 47

Mô tả VHDL của cổng AND Mô tả VHDL đầy đủ

của cổng AND bao gồm: library, entity và architecture.

Biên dịch, mô phỏng và kiểm tra kết quả.

Tương tự thực hiện mô tả bằng VHDL với NOT, NAND, OR, NOR… (kiểm tra kq)

Page 48: Chương iii   1

08.04.23 48

Ví dụ 2: cổng AND 4 đầu vào Bài toán: thiết kế mạch thực hiện

chức năng e = a & b & c & d. Dùng đồ họa. Dùng VHDL

Page 49: Chương iii   1

08.04.23 49

AND 4 (đồ họa)

Cổng vào a, b, c, d Dây nối bên trong Cổng ra e

e = (a & b) & (c & d)

Page 50: Chương iii   1

08.04.23 50

AND 4 (VHDL) Khai báo thư viện

và thực thể.

Page 51: Chương iii   1

08.04.23 51

AND4 - architecture Từ khóa signal

dùng để khai báo các biến đóng vai trò là các dây nối giữa các khối.

Page 52: Chương iii   1

08.04.23 52

AND4 đầy đủ

Page 53: Chương iii   1

08.04.23 53

DATA TypesData Type Values Example

Std_logic ‘1’, ‘0’,’Z’ Q <= ‘1’;

Std_logic_vector (array of bits) DataOut <= "00010101";Boolean True, False EQ <= True;Integer -2, -1, 0, 1, 2, 3, 4 . . . Count <= Count + 2;Real 1.0, -1.0E5 V1 = V2 / 5.3Time 1 ua, 7 ns, 100 ps Q <= ‘1’ after 6 ns;Character ‘a’, ‘b’, ‘2, ‘$’, etc. CharData <= ‘X’;String (Array of characters) Msg <= "MEM: "

Page 54: Chương iii   1

08.04.23 54

Data types Kiểu rút gọn: Ví dụ: signal ShortInt: integer range 0 to 255; Kiểu liệt kê: type <tên kiểu> is (<các giá trị>);Ví dụ:type states is (StateLive,StateWait,StateSample,StateDisplay);signal current_state, next_state: states; Kiểu mảng: type <tên mảng> is array(giới hạn chỉ số) of <kiểu của các

phần tử>;Ví dụ:type MyArray is array(15 downto 0) of std_logic; signal temp: MyArray;type multi is array(7 downto 0, 255 downto 0) of bit;

Page 55: Chương iii   1

08.04.23 55

Sử dụng tín hiệu: Việc khai báo tín hiệu được bắt đầu bằng từ khóa SIGNAL, nằm giữa từ khóa ARCHITECTURE và BEGINVí dụ:

Page 56: Chương iii   1

08.04.23 56

Sử dụng tín hiệuPhép gán tín hiệu:Phép gán tín hiệu được thực hiện

nhờ toán tử gán “<=“.

Page 57: Chương iii   1

08.04.23 57

Các phép toánOperator Description Operand Types

and And Any Bit or Boolean type

or Or Any Bit or Boolean type

nand Not And Any Bit or Boolean type

nor Not Or Any Bit or Boolean type

xor Exclusive OR Any Bit or Boolean type

xnor Exclusive NOR Any Bit or Boolean type

Page 58: Chương iii   1

08.04.23 58

Các phép toánOperator Description Operand Types

= Equality Any type

/= Inequality Any type

< Less than Any scalar type or discrete array

<= Less than or equal Any scalar type or discrete array

> Greater than Any scalar type or discrete array

>= Greater than or equal Any scalar type or discrete array

Page 59: Chương iii   1

08.04.23 59

Các phép toán cộngOperator Description Operand Types

+ Addition Any numeric type

- Subtraction Any numeric type

& Concatenation Any numeric type

& Concatenation Any array or element type

Page 60: Chương iii   1

08.04.23 60

Sử dụng thư viện: Khai báo thư viện:Library ieee;Use ieee.std_logic_1164.all; Các gói thư viện thường dùng:-Std_logic_signed-Std_logic_unsigned-Std_logic_arith

Page 61: Chương iii   1

08.04.23 61

Bộ so sánhToán tử gán tín hiệu có điều kiện:Y <=  A when (Sel = "00") else             B when (Sel = "01") else             C when (Sel = "10") else             D when (Sel = "11");

Page 62: Chương iii   1

08.04.23 62

Bộ giải mã BCD-7segment

Page 63: Chương iii   1

08.04.23 63

Triger D

D-Flipflop

d

clk

q

Từ khóa processCấu trúc if-then

Xác định mức tác động event

Page 64: Chương iii   1

08.04.23 64

Từ khóa process, if-then<Nhãn process:> process(danh sách các yếu tố kích thích hoạt động) -- Các khai báo trong process

Begin -- Các câu lệnh trong processs End process<Nhãn process>; if (điều kiện logic) then

-- các câu lệnh elsif (điều kiện logic) then -- các câu lệnh else -- các câu lệnh end if;

Page 65: Chương iii   1

08.04.23 65

Triger có xóa Khai báo thư viện và thực thể

Page 66: Chương iii   1

08.04.23 66

Kiến trúc của FF đồng bộ và không đồng bộ

Page 67: Chương iii   1

08.04.23 67

Bộ đếm 4 bít (xóa đồng bộ)

Page 68: Chương iii   1

08.04.23 68

Thực hiện tuần tự và đồng thời trong VHDL Các lệnh nằm giữa begin – end của

1 architecture sẽ thực hiện đồng thời mà không phụ thuộc thứ tự.

Các lệnh nằm giữa begin – end của 1 process, hàm hay thủ tục sẽ thực hiện tuần tự theo thứ tự xuất hiện (như các ngôn ngữ dòng lệnh quen thuộc).

Page 69: Chương iii   1

08.04.23 69

Tuần tự, đồng thờiarchite cture rotate2 of rotate is       signal Qreg: std_logic_vector(0 to 7);begin    -- Concurrent section starts here reg: process(Rst,Clk)       begin    -- Sequential section starts here           if Rst = ‘1’ then -- Async reset               Qreg <= "00000000";           elsif (Clk = ‘1’ and Clk’event) then               if (Load = ‘1’) then                   Qreg <= Data;               else                   Qreg <= Qreg(1 to 7) & Qreg(0);               end if;           end if;       end process;  -- Sequential section ends here      Q <= Qreg;end rotate2;    -- Concurrent section ends here

QData

Load

Clk

Shift

-rot

ate

Page 70: Chương iii   1

08.04.23 70

BT:Thiết kế bộ đếm-ghi dịch đa năng(universal counter)

Có thể được sử dụng như một thanh ghi chứa dữ liệu, bộ ghi dịch hai chiều, hay bộ đếm tiến hoặc lùi.

Universal counter

clk

datain

serinl

serinr

termcnt

dataout

mode8

8

3

Page 71: Chương iii   1

08.04.23 71

Sử dụng biến Biến được sử dụng để lưu các giá

trị trung gian(khác với tín hiệu). Khai báo biến được thực hiện giữa

process và begin, bắt đầu bằng từ khóa variable.

Biến chỉ có tác dụng trong process, hàm và thủ tục.

Toán tử gán biến: “:=”

Page 72: Chương iii   1

08.04.23 72

Ví dụ sử dụng biến Tạo xung có độ trống 2/3 từ xung

clk vào.clk

Xung ra

Page 73: Chương iii   1

08.04.23 73

Architecture bh of taoxung isbegin

process(clk) variable dem: integer;

begin if(clk’event and clk = ‘1’) then

dem := dem + 1;if (dem = 6) then

dem := 0;end if;if(dem<=1) then

xungra <= ‘1’;else

xungra <= ‘0’;end if;

end if;end process;

end bh;

Page 74: Chương iii   1

08.04.23 74

Sử dụng Component Sử dụng cấu trúc component khi ta

muốn sử dụng lại một khối đã có sẵn. Khi đó file mô tả khối có sẵn phải ở

trong cùng thư mục với với project sử dụng nó.

Ví dụ: với cổng and 4 đầu vào được tổ hợp từ 3 cổng and 2 đầu vào, cổng and2 đã được mô tả trong file my_and

Page 75: Chương iii   1

08.04.23 75

out

AND1

AND2

AND3

AND4

in1in2

in3in4

temp1

temp2

ANDab c

My_and

Page 76: Chương iii   1

08.04.23 76

Sử dụng ComponentEntity and4 isPort( in1,in2,in3,in4: in std_logic;

out : out std_logic );End and4;Architecture Struc_and4 of and4 is

component my_andport( a, b: in std_logic; c : out std_logic

); end component; signal temp1, temp2: std_logic; -- Các tín hiệu làm dây nối giữa các

componentBegin u1: my_and port map (a => in1, b => in2, c =>temp1); u2: my_and port map (a => in3, b => in4, c =>temp2); u3: my_and port map (a => temp1, b => temp2, c =>out);End struc_and4;

Khai báo component trong architecture

Page 77: Chương iii   1

08.04.23 77

Sử dụng các khối sẵn có trong thư viện