Chương iii 1

Post on 22-Nov-2014

1.604 views 0 download

description

vhdl language

Transcript of 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

08.04.23 2

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

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)

08.04.23 4

ROM

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.

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ì)

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.

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.

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.

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

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

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.

08.04.23 13

Ví dụ: CPLD họ MAX7000

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

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ỏ).

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).

08.04.23 16

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

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.

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).

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ế.

08.04.23 20

Ví dụ: FPGA của Altera

Altera FPGA 20,000 cells

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.

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.

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.

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).

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…

08.04.23 26

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

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.

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.

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

08.04.23 30

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

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

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ử.

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).

08.04.23 34

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

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ỹ.

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.

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.

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ế.

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.

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.

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.

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

08.04.23 43

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

ns, b : 300 ns)

08.04.23 44

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.

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.

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)

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

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)

08.04.23 50

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

và thực thể.

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.

08.04.23 52

AND4 đầy đủ

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: "

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;

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ụ:

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 “<=“.

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

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

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

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

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");

08.04.23 62

Bộ giải mã BCD-7segment

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

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;

08.04.23 65

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

08.04.23 66

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

08.04.23 67

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

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).

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

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

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: “:=”

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

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;

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

08.04.23 75

out

AND1

AND2

AND3

AND4

in1in2

in3in4

temp1

temp2

ANDab c

My_and

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

08.04.23 77

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