Bài giảng Thiết kế vi mạch lập trình được - Nguyễn Thế Dũng
MỤC LỤC
Chương 1: KIẾN THỨC CƠ SỞ . 4
1.1. Các khái niệm chung . 4
1.1.1. Transistor. 4
1.1.2. Vi mạch số tích hợp . . 4
1.1.3. Cổng logic . 5
1.1.4. Phần tử nhớ. 8
1.1.5. Mạch logic tổ hợp . 10
1.1.6. Mạch logic tuần tự . . 11
1.2. Các phương pháp thể hiện thiết kế . 12
1.2.1. Mô tả bằng sơ đồ . 12
1.2.2. Mô tả bằng HDL . 14
1.2. Yêu cầu với một thiết kế mạch logic số . 16
1.3. Các công nghệ thiết kế mạch logic số . 17
1.4. Kiến trúc của các IC khả trình . . 20
1.4.2. Kiến trúc PAL . 23
1.4.3. Kiến trúc PLA . 23
1.4.4. Kiến trúc của GAL . 24
1.4.5. Kiến trúc của FPGA . 26
Chương 2: GIẢI PHÁP PHẦN CỨNG FPGA CỦA XILINX CHO THIẾT KẾ
VI MẠCH SỐ . 29
2.1. Một số giải pháp cho thiết kế mạch logic số . 29
2.1.1. Khái niệm FPGA. 29
2.1.2. Ứng dụng của FPGA trong xử lý tín hiệu số . 32
2.1.3. Công nghệ tái cấu trúc FPGA . 33
2.2. Kiến trúc của FPGA . 34
2.2.1. Kiến trúc chung FPGA . 34
2.2.2. So sánh giữa cấu trúc nhỏ và cấu trúc lớn: . 37
2.2.3. So sánh giữa SDRAM Programming và Anti-fuse programming: 38
2.3.1. Khối logic khả trình . 40
2.3.3. Hệ thống kết nối khả trình . 60
2.3.4. Các phần tử khác củaFPGA . 62
2.4. Các kh ối giao tiếp có trên mạch Xilinx Spartan 3E Starter Kitboard FPGA . 72
2.4.1. Các thành phần chính của Xilinx Spartan 3E Starter Kitboard . 72
2.4.2. Mạch nạp JTAG/PLATFORM FLASH XCF04 . 73
2
2.4.3. Khối nguồn Power Supply . . 73
2.4.4. Khối giao tiếp Keypad . 73
2.4.5. Khối 8x2 Led- Diod. 73
2.4.6. Khối Switch . . 74
2.4.7. Khối giao tiếp 4x7-seg Digits . 74
2.4.8. Khối giao tiếp RS232. 74
2.4.9. Khối giao tiếp USB –RS232 . 74
2.4.10. Khối giao tiếp PS/2 . 75
2.4.11. Khối giao tiếp VGA . 75
2.4.12. Khối giao tiếp LCD1602A . 75
2.4.13. Khối giao tiếp ADC/DAC . 75
2.4.14. Khối giao tiếp Ethernet . 76
Chương 3: GIẢI PHÁP PHẦN MỀM CHO THIẾT KẾ VI MẠCH SỐ . 77
3.1. Giới thiệu các phần mềm hỗ trợ thiết kế . 77
3.1.1. Hãng Xilinx . . 77
3.1.2. ISE. 77
3.1.3. EDK . 78
3.1.4. System Generator 9.2. 78
3.2. Quy trình thiết kế FPGA tổng quát . 78
3.2.1. Mô tả thiết kế. . 80
3.2.2. Tổng hợp thiết kế . 81
3.2.3. Hiện thực hóa thiết kế . 87
3.2.4. Cấu hình FPGA . 93
3.3. Phần mềm thiết kế ISE của Xilinx . 93
3.3.1. Giới thiệu môi trường lập trình . 93
Chương 4: MỘT SỐ BÀI TOÁN THIẾT KẾ MẠCH SỐ TRÊN FPGA
SPARTAN-3E STARTER KIT BOARD . 96
4.1. Điều khiển LED với Switch và Push button. . 96
4.1.1. Sơ đồ khối chức năng . 96
4.1.2. Nguyên lý hoạt động. 98
4.1.3. Phân tích xây dựng bài toán . 98
4.1.4. Hiện thực hóa thiết kế . 105
4.2. Picoblaze_pwm_control . . 115
4.2.1. Sơ đồ nguyên lý . 115
4.2.2. Nguyên lý hoạt động. 115
3
4.2.3. Phân tích thiết kế . 115
4.2.4. Hiện thực hóa thiết kế . 116
4.3. Chuyển đổi ADC . 122
4.3.1. Sơ đồ nguyên lý . 122
4.3.2. Nguyên lý hoạt động. 123
4.3.3.Phân tích thiết kế bài toán . 123
4.4. Điều khiển LCD . . 129
4.4.1. Sơ đồ khối chức năng . 129
4.4.2. Vi điều khiển PicoBlaze. 129
4.4.3. Nguyên lý hoạt động. 132
4.4.4. Phân tích xây dựng bài toán . 132
4.4.5. Hiện thực hóa thiết kế . 133
TÀI LIỆU THAM KHẢO . 139
TC 6912 điều khiển Gain và cũng giao tiếp SPI vớiFPGA . 123 4.3.2. Nguyên lý hoạt động - Tín hiệu đầu ra phụ thuộc vào tín hiệu đầu vào và thiết lập của mạch theo công thức sau: Trong đó Vin có thể được cấp vào với đầu vào là VinA, hoặc VinB. Gain có giá trị từ -1,-2, -5, -10,-20, -50 , -100. Giá trị này có thể thay đổi được khí bấm button ‘North’ and ‘South’. Giá trị đầu vào và đầu ra số được hiện thị lên màn hình LCD: 4.3.3.Phân tích thiết kế bài toán - Sử dụng vi điều khiển Picoblaze để lập trình. Sơ đồ code như sau: - Trong đó file picoblaze_amp_adc_control.vhd là file mức đỉnh . - Kcpsm3.vhd là file tạo ra vi điều khiển picoblaze. - Adc_ctrl.vhd là kết quả tạo từ adc_ctrl.psm sau khi tiến hành biên dịch - picoblaze_amp_adc_control.ucf là file chứa dữ liệu về các chân đã gán. 124 4.3.4. Hiện thực hóa thiết kế 4.3.4.1 Kiểm tra phần cứng Trước khi tiến hành biên dịch và nạp code chúng ta cần kiểm tra kĩ các cáp, dây nguồn đã được cấp đúng chưa: - Jumper nguồn của bank0 đã nối chưa, có thể nối 2.5V hoặc 3.3 V. Trong các ứng dụng thông thường người ta sử dụng 3.3 V. - Đèn nguồn đã sáng chưa, nếu chưa nên kiểm tra lại dây nguồn hoặc công tắc gạt nguồn có bi lỏng không. - Jumper chọn chế độ đã được cắm đúng chưa , ở ứng dụng này ta nên cắm M2 125 1.Nơi cắm nguồn. 2. Công tắc và jumper nguồn. 3. Cổng cắm dây usb. 4.Jumper chế độ, chọn m2. 5.Jumper cấp nguồn cho bank0. Nên chọn 3.3V. 4.3.4.2 Biên dịch và nạp code - Tiến hành biên dịch file code mức thấp adc_ctrl.vhd từ file adc_ctrl.psm (đã được hướng dẫn cụ thể cách biên dịch từ bài trước). - Vào phần mền ise tạo ra Project mới để soạn thảo file mức đỉnh picoblaze_amp_adc_control.vhd. - Tiến hành gán chân theo bảng sau: Gán chân cho LED: Gán chân cho SPI: Gán chân cho Strata flash Gán chân cho LCD: Gán chân cho I/O ports on J4: 126 Gán chân cho switches: Gán chân cho Press buttons: - Tạo ra file picoblaze_amp_adc_control.ucf sau khi đã gán chân thành công bằng cách kích đúp vào biểu tượng như hình dưới đây: - Tiến hành add các file mức thấp adc_ctrl.vhd, picoblaze_amp_adc_control.ucf vào trong Project.(đã được hướng dẫn cách add file ở bài trước). - Biên dịch và nạp file “picoblaze_amp_adc_control.bit” vào kit. - Kết nối đầu vào VINA ở J7 với j27: 127 - Dùng 2 button thay đổi G quan sát LCD và rút ra kết luận. - Thay đổi đầu vào bằng cách kết nối VINA với J22. 128 - Điều chỉnh G ,quan sát LCD và rút ra nhận xét Chú thích: 0. Nguồn 1. Switch nguồn. 2. Cổng USB để nạp mã nguồn cho KIT. 3. Jumper nguồn. 4. Núm xoay (Rotary Encoder). 5. Nút bấm. 6. LED đơn. 7. Switch. 8. LCD. 9. Cổng kết nối màn hình VGA. 10. XC3S500E. 11. LED báo nạp chương trình. 129 4.4. Điều khiển LCD 4.4.1. Sơ đồ khối chức năng Sơ đồ mạch nguyên lý 4.4.2. Vi điều khiển PicoBlaze Trong sơ đồ mạch trên hầu hết các thành phần như nút bấm, LCD, LED đều rất quen thuộc. Điểm đáng chú ý nhất trong sơ đồ trên là vi điều khiển PicoBlaze. Câu hỏi thường gặp đó là trên KIT thì PicoBlaze nó ở vị trí nào? Câu 130 trả lời là nó không được đóng gói thành 1 IC hữu hình (nhìn thấy được) mà được nhúng trong chip XC3S500E – tức là trong XC3S500E có vi điều khiển PicoBlaze. Chính vì FPGA là mảng cổng logic lập trình được tức là có thể cấu hình lại được nên chúng ta hoàn toàn có thể tạo ra một IC và nằm trong FPGA, ví dụ như ta có thể lập trình để tạo một IC họ 8051, PIC, hoặc 1 IC chuyên dụng nào đó.. nằm trong FPGA. Và để thuận tiện cho việc phát triển ứng dụng thì Xillinx đã tạo sẵn vi điều khiển PicoBlaze này. 4.4.2.1. Cấu trúc của vi điều khiển 4.4.2.2. Lập trình và biên dịch chương trình Để lập trình cho PicoBlaze ta phải sử dụng tập lệnh riêng, giống như sử dụng ngôn ngữ assembly với vi điều khiển họ 8051 vậy. Công cụ soạn thảo được khuyến khích sử dụng là Notepad (có sẵn trên máy) hoặc Notepad++ (được cài đặt thêm). 131 Tập lệnh của PicoBlaze như sau: Nhóm lệnh điều khiển: JUMP aaa JUMP Z,aaa JUMP NZ,aaa JUMP C, aaa JUMP NC,aaa CALL aaa CALL Z,aaa CALL NZ,aaa CALL C,aaa CALL NC,aaa RETUR N RETUR N Z RETUR N NZ RETUR N C RETUR N NC Nhóm lệnh xử lý toán học: ADD sX,kk ADDCY sX,kk SUB sX,kk SUBCY sX,kk COMPARE sX,kk ADD sX,sY ADDCY sX,sY SUB sX,sY SUBCY sX,sY COMPARE sX,sY Nhóm lệnh ngắt: RETURNI ENABLE RETURNI DISABLE ENABLE INTERRUPT DISABLE INTERRUPT Nhóm lệnh logic: LOAD sX,kk AND sX,kk OR sX,kk XOR sX,kk TEST sX,kk LOAD sX, sY AND sX, sY OR sX, sY XOR sX, sY TEST sX,sY Nhóm lệnh lưu trữ: STORE sX,ss STORE sX,(sY) PETCH sX,ss PETCH sX,(sY) Nhóm lệnh dịch và quay: SR0 sX SR1 sX SRX sX SRA sX RR sX SL0 sX SL1 sX SLX sX SLA sX RL sX 132 Nhóm lệnh vào/ra: INPUT sX,pp INPUT sX,(sY) OUTPUT sX,pp OUTPUT sX,(sY) Chú ý: o ‘X’ và ’Y’ nằm trong đoạn 0 đến F. o ‘kk’ nằm trong đoạn 00 đến FF. o ‘aaa’ nằm trong đoạn từ 000 đến 3FF. o ‘pp’ nằm trong đoạn từ 00 đến FF. o ‘ss’ nằm trong đoạn từ 00 đến 3F. 4.4.3. Nguyên lý hoạt động Như ta thấy ở sơ đồ Hình 1.1 vi điều khiển PicoBlaze còn kết nối với 1 thành phần đặc biệt nữa là program_rom với 2 bus address,instruction và 1 dây kcpsm3_reset. Đây chính là khu vực lưu trữ mã lệnh của vi điều khiển PicoBlaze. Với độ rộng bus address là 10bits thì program_rom này có thể lưu trữ tới 1024 mã lệnh, bus instruction có độ rộng 18bits thì mã lệnh của nó có độ dài là 18bits. Trong ứng dụng này ta sẽ kết nối vi điều khiển PicoBlaze với LCD và truyền dữ liệu với nhau thông qua kiểu 4 dây (khác với sử dụng 8 dây), chưa kể các dây RS, RW, E. Trong Hình 1.2 ta thấy LCD và bộ nhớ StrataFLASH có kết nối với nhau, do vậy nhà sản xuất đã khuyến cáo nên disable bộ nhớ này để không ảnh hưởng tới việc hiển thị LCD. 4.4.4. Phân tích xây dựng bài toán Ta sẽ xây dựng chương trình là file mức đỉnh và các file ở mức thấp hơn. Dĩ nhiên là với các chương trình đơn giản thì ta cũng không cần phải sử dụng vi điều khiển và cấu hình thành file mức đỉnh (ví dụ như lập trình 1 bộ phân kênh, hợp kênh với vhdl,…), do đó việc này chỉ hiệu quả hơn khi phát triển các chương trình phức tạp hơn. Ta liên tưởng cũng giống như một chương trình bằng ngôn ngữ C, nếu phức tạp ta sẽ sử dụng chương trình con và ngược lại. 133 Hình 1.7 Cấu trúc chương trình File kcpsm3.vhd và file control.vhd là 2 file mức thấp. Trong đó file kcpsm3.vhd là file nhà sản xuất đã phát triển để tạo nên vi điều khiển PicoBlaze mà ta sử dụng và ta không cần phải viết lại hay sửa đổi nó, file control.vhd chính là kết quả của các bước biên dịch từ file control.psm và nó được ghi vào program_rom để làm chức năng hiển thị dữ liệu lên LCD. File s3esk_startup.ucf chính là file trong đó chứa các dữ liệu liên quan tới việc gán chân cho ứng dụng của chúng ta (sẽ làm rõ ở mục 4). File mức đỉnh chính là file s3esk_startup.vhd, file này nó sẽ làm nhiệm vụ kết nối tất cả các file mức thấp hơn và ngoài ra nó sẽ cấu hình nên các phần tử như bộ phân kênh, cổng AND, cổng 3 trạng thái, D- FF ở trên Hình 1. 4.4.5. Hiện thực hóa thiết kế Chạy chương trình StartAll ProgramsXillinx ISE 8.2iProject Navigator. Trên màn hình làm việc chọn FileNew Project Hình 1.8 Tạo Project mới 134 Click Next, chọn như hình sau và click đến khi không còn cửa sổ nào xuất hiện. ProjectNew Source và chọn như sau: Click Next đến khi không còn cửa sổ nào xuất hiện nữa, và kết quả hiện ra màn hình chính là màn hình soạn thảo như sau: 135 Bây giờ bạn sẽ soạn thảo file mức đỉnh trên màn hình này. File kcpsm3.vhd đã có sẵn và bạn hãy copy vào vị trí cùng thư mục chứa project của bạn, file control.vhd thì bạn đã được hướng dẫn cách tạo như ở bước trên bằng cách biên dịch từ file control.psm. Sau khi đã copy 2 file mức thấp vào rồi, bước tiếp theo là kiểm tra cú pháp chương trình. Click Check Syntax bạn sẽ thấy bên trên góc trái có hình như sau: 136 Click chuột phải và chọn Add Source cho từng file. Sau khi thực hiện ta sẽ thấy nó như sau: Cuối cùng bạn còn phải xử lý 1 vấn đề nữa đó là việc gán chân cho thiết kế. Ứng dụng này của chúng ta có các kết nối trong đó có thể kể đến kết nối của 4 chân dữ liệu LCD chẳng hạn. Việc của bạn là phải khai báo địa chỉ các chân đó. Ta hãy tra bảng trang 44 (Hình 1.14) và trang 45 (Hình 1.15) tài liệu “Spartan-3E FPGA Starter Kit Board User Guide”. 137 Quay trở lại ISE, click User ConstraintsAssign Package Pins hiện lên bảng như sau: Bây giờ hãy nhìn lên Hình 1.14 và giả sử ta bắt đầu gán chân lcd_d vào chân M15 của FPGA. Hãy click chuột từ bảng bên trái ở Hình 1.16, giữ nguyên chuột và kéo sang bảng bên phải ở Hình 1.16 thả vào ô có vị trí hàng dọc mà M và hàng ngang là 15. Như vậy là ta đã hoàn thành việc gán cho chân dữ liệu D7 của LCD cho FPGA, tiếp tục với các chân còn lại ở bảng bên trái. Ngoài ra cũng cần phải kích chọn các dữ liệu khác ở bảng bên trái của Hình 1.16 theo Hình 1.1, như chọn IOSTANDARD là LVCMOS33,… Cuối cùng tất cả đã sẵn sàng để tạo ra 1 file duy nhất đó là file có đuôi .bit được sử dụng để nạp vào Xllinx Spartan-3E. Click vào Generate Programming FileConfigure Device (iMPACT). Đợi 1 lát để kiểm tra lại toàn bộ thiết kế, nếu không có gì sai sót bảng sau sẽ hiện ra: 138 Click Finish. 139 TÀI LIỆU THAM KHẢO [1]. Nguyễn Thúy Vân, 2005, Thiết kế logic mạch số, NXB Khoa học kỹ thuật. [2]. Vũ Chiến Thắng, Giáo trình Thiết kế mạch bằng máy vi tính [3]. Học viện kỹ thuật quân sự, Bài giảng thiết kế mạch logic số [4]. Tống Văn On, Thiết kế mạch số với VHDL và Verilog Tập 1 + 2, NXB Lao động xã hội [5]. Volnei A. Pedroni, Circuit Design with VHDL, MIT Press Cambridge, Massachusetts London, England, 2004 [6]. Xilinx Ltd, Spartan-3E Starter Kit Board User Guide [7]. Xilinx - Spartan-3E FPGA Family Datasheet
File đính kèm:
- Bài giảng Thiết kế vi mạch lập trình được - Nguyễn Thế Dũng.pdf