Bài giảng Điều khiển nhúng - Chương 1: Thiết kế phần cứng dùng FPGA cung cấp cho người học các kiến thức: Giới thiệu cấu trúc FPGA, giải mã địa chỉ phần cứng, sử dụng quartus/block diagram. Mời các bạn cùng tham khảo.
Trang 1THIẾT KẾ PHẦN CỨNG
DÙNG FPGA
Chương 1
Trang 2I GIỚI THIỆU CẤU TRÚC FPGA
1.1 FPGA (Field Programmable Gate Array)
- Là mạch tích hợp có khả năng cấu hình lại
bởi người thiết kế, thực hiện các hàm logic
từ cơ bản đến phức tạp
- FPGA được cấu thành từ các bộ phận:
• Các khối logic cơ bản lập trình được
(logic block)
• Hệ thống mạch liên kết lập trình được
• Khối vào/ra (IO Pads)
• Phần tử thiết kế sẵn khác như DSP
slice, RAM, ROM, nhân vi xử lý
- Cấu hình FPGA dùng ngôn ngữ mô tả
phần cứng HDL (hardware description
Trang 3I GIỚI THIỆU CẤU TRÚC FPGA
1.1 FPGA (Field Programmable Gate Array)
Trang 4I GIỚI THIỆU CẤU TRÚC FPGA
1.1 FPGA (Field Programmable Gate Array)
Trang 5I GIỚI THIỆU CẤU TRÚC FPGA
1.1 FPGA (Field Programmable Gate Array)
- Họ Cyclone IV của Altera
Trang 6I GIỚI THIỆU CẤU TRÚC FPGA
1.2 CPLD (Complex Programmable Logic Device)
- Cấu trúc đơn giản hơn FPGA và ít khối logic hơn FPGA
- Bộ nhớ cấu hình trên EEPROM
- Thời gian trễ dễ kiểm soát
Trang 7I GIỚI THIỆU CẤU TRÚC FPGA
1.2 CPLD (Complex Programmable Logic Device)
Trang 8I GIỚI THIỆU CẤU TRÚC FPGA
1.2 CPLD (Complex Programmable Logic Device)
The MAX II CPLD has the following features (MAX II Device Handbook):
• Low-cost, low-power CPLD
• Instant-on, non-volatile architecture
• Standby current as low as 25 μA
• Provides fast propagation delay and clock-to-output times
• Provides four global clocks with two clocks available per logic array block (LAB)
• UFM block up to 8 Kbits for non-volatile storage
• MultiVolt core enabling external supply voltages to the device of either
3.3V, 2.5V or 1.8V
• MultiVolt I/O interface supporting 3.3-V, 2.5-V, 1.8-V, and 1.5-V logic levels
Trang 9I GIỚI THIỆU CẤU TRÚC FPGA
1.2 CPLD (Complex Programmable Logic Device)
- Họ MAX II của Altera
Trang 10I GIỚI THIỆU CẤU TRÚC FPGA
Trang 11II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.1 WR và RD trên 2 chân riêng biệt (kiến trúc Intel)
2 3 4 5 6 7 8 9
11
1
19 18 17 16 15 14 13 12
D1 D2 D3 D4 D5 D6 D7 D8 CLK OE
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
2 4 6 8
1
18 16 14 12 11
13 15 17
9 7 5 3
19
A1 A2 A3 A4
1OE
Y1 Y2 Y3 Y4 A5
A6 A7 A8
Y5 Y6 Y7 Y8
2OE
2 3 4 5 6 7 8 9
19 1
18 17 16 15 14 13 12 11
A0 A1 A2 A3 A4 A5 A6 A7
G DIR
B0 B1 B2 B3 B4 B5 B6 B7
Trang 12II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.1 WR và RD trên 2 chân riêng biệt (kiến trúc Intel)
2 3 4 5 6 7 8 9
11
19 18 17 16 15 14 13 12
D1 D2 D3 D4 D5 D6 D7 D8 CLK
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
2 4 6 8
1
18 16 14 12 11
13 15 17
9 7 5 3
A1 A2 A3 A4
Y1 Y2 Y3 Y4 A5
A6 A7 A8
Y5 Y6 Y7 Y8
2 3 4 5 6 7 8 9
1
18 17 16 15 14 13 12 11
A0 A1 A2 A3 A4 A5 A6 A7
B0 B1 B2 B3 B4 B5 B6 B7
Trang 13II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.1 WR và RD trên 2 chân riêng biệt (kiến trúc Intel)
- Sơ đồ kết nối quá trình đọc dữ liệu
74LS244
2 4 6 8
1
18 16 14 12 11
13 15 17
9 7 5 3
19
A1 A2 A3 A4
1OE
Y1 Y2 Y3 Y4 A5
A6 A7 A8
Y5 Y6 Y7 Y8
2OE
1 2
3
CS
RD
1 2
3
CS RD
74LS245
2 3 4 5 6 7 8 9
19 1
18 17 16 15 14 13 12 11
A0 A1 A2 A3 A4 A5 A6 A7
G DIR
B0 B1 B2 B3 B4 B5 B6 B7
Trang 14II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.1 WR và RD trên 2 chân riêng biệt (kiến trúc Intel)
- Sơ đồ kết nối quá trình ghi dữ liệu
1 2
3
74LS573
2 3 4 5 6 7 8 9
11 1
19 18 17 16 15 14 13 12
D0 D1 D2 D3 D4 D5 D6 D7 LE OE
Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7
WR
CS
1 2
3
74LS574
2 3 4 5 6 7 8 9
11
1
19 18 17 16 15 14 13 12
D1 D2 D3 D4 D5 D6 D7 D8 CLK OE
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8
CS WR
Trang 15II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.1 RD và WR trên 2 chân riêng biệt (kiến trúc Intel)
* Ví dụ 1: Giải mã dùng IC 74138
- Phần cứng 8 đường địa chỉ A7-A0,
8 đường dữ liệu D7-D0 Giải mã các
ngoại vi sau:
• ADC: 4 kênh 8 bit
• DAC: 2 kênh 8 bit
• PWM: 6 kênh 8 bit
• Encoder: 6 kênh 8 bit
• DI: 2 kênh 8 bit
U1
74LS138
1 2 3
15 14 13 12 11 10 9 7
6 4 5
A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
Trang 16II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.1 RD và WR trên 2 chân riêng biệt (kiến trúc Intel)
* Các bước thực hiện
- Bước 1: Tính số kênh lớn nhất trong 1 module để xác định số địa chỉ cần giải
mã cho các kênh
6 kênh -> cần 3 đường địa chỉ A[2:0]
- Bước 2: Tính số module để xác định số địa chỉ cần giải mã cho các module
(Không cần gán địa chỉ liên tục cho các module)
5 module -> cần 3 đường địa chỉ A[5:3], hoặc A[6:4], hoặc A[7:5]
- Bước 3: Vẽ sơ đồ kết nối module: kết nối địa chỉ giải mã và dữ liệu tới các
module, xác định địa chỉ của từng module
- Bước 4: Vẽ sơ đồ kết nối kênh: kết nối địa chỉ và dữ liệu của các kênh trong
1 module Xác định địa chỉ của từng kênh trong 1 module
Trang 172.1 RD và WR trên 2 chân riêng biệt (kiến trúc Intel)
- Sơ đồ kết nối module
II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
Trang 182.1 RD và WR trên 2 chân riêng biệt (kiến trúc Intel)
- Sơ đồ kết nối kênh
II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
Trang 19II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.1 RD và WR trên 2 chân riêng biệt (kiến trúc Intel)
* Ví dụ 2:
- Phần cứng 8 đường địa chỉ A7-A0, 8 đường dữ liệu D7-D0 Giải mã cácngoại vi sau:
• ADC: 16 kênh 8 bit
• DAC: 2 kênh 8 bit
• PWM: 4 kênh 8 bit
• Encoder: 4 kênh 8 bit
• DI: 4 kênh 8 bit
• DO: 2 kênh 8 bit
• CAP: 6 kênh 8 bit
15 14 13 12 11 10 9 7
6 4 5
A B C
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
G1 G2A G2B
Trang 20II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.2 Tín hiệu WR và RD trên 1 chân (kiến trúc Motorola)
Giản đồ ghi dữ liệu Giản đồ đọc dữ liệu
- Chuyển đổi Giao tiếp RD/WR trên 1 chân -> Giao tiếp RD, WR trên 2 chânriêng biệt?
Trang 21II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.2 Tín hiệu WR và RD trên 1 chân (kiến trúc Motorola)
D[7 0]
A[7 0]
STROBE WR/RD
D[7 0] A[7 0]
RD WR CS
Trang 22II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.2 Tín hiệu WR và RD trên 1 chân (kiến trúc Motorola)
- Giao tiếp cồng máy in LPT chuẩn EPP (Enhanced Parallel Port)
Trang 23II GIẢI MÃ ĐỊA CHỈ PHẦN CỨNG
2.3 Độ rộng dữ liệu khác nhau
- Phần cứng 8 đường địa chỉ A7-A0,
8 đường dữ liệu D7-D0 Giải mã các
ngoại vi sau:
• ADC: 4 kênh 12 bit
• DAC: 4 kênh 12 bit
• PWM: 6 kênh 10 bit
• Encoder: 6 kênh 16 bit
• DI: 2 kênh 8 bit
• DO: 2 kênh 8 bit
1 2 3 4 5 6 7 8
39 38 37 36 35 34 33 32
21 22 23 24 25 26 27 28
17 16 29 30 11 10
EA/VP X1
X2
RESET
INT0 INT1 T0 T1 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6 P2.7 RD WR PSEN ALE/P TXD RXD
Trang 24III SỬ DỤNG QUARTUS/ BLOCK DIAGRAM
3.1 Qui trình thực hiện
Trang 25III SỬ DỤNG QUARTUS/ BLOCK DIAGRAM
3.1 Qui trình thực hiện
- Tạo 1 project mới: File -> New project wizard
- Thiết kế dùng sơ đồ nguyên lý: File -> New -> Block Diagram / Schematic File
- Biên dịch mạch thiết kế: Processing -> Start Compilation
- Gán chân tín hiệu vào, tín hiệu ra: Assignments -> Assignment Editor
- Mô phỏng mạch thiết kế: File -> New -> Vector Waveform File
- Lập trình và cấu hình FPGA: Tools -> Programmer
- Kiểm tra mạch
Trang 26III SỬ DỤNG QUARTUS/ BLOCK DIAGRAM
3.2 Liên kết các khối
- Tạo 1 filet mới: File -> New -> Block Diagram / Schematic File
- Đóng gói file thành 1 khối (module): File -> Create/Update -> Create
Symbol File for Current File
- Sử dụng khối vừa tạo trong 1 Schematic File khác: Double Click -> Libraries