Chương iii 1
description
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