intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Thiết kế vi mạch lập trình được - Nguyễn Thế Dũng

Chia sẻ: Nguyễn Thị Ngọc Lựu | Ngày: | Loại File: PDF | Số trang:140

719
lượt xem
268
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Cuốn sách Bài giảng Thiết kế vi mạch lập trình được gồm có 4 chương. Kiến thức cơ sở (Các khái niệm chung, Các phương pháp thể hiện thiết kế, Yêu cầu với một thiết kế mạch logic số, Các công nghệ thiết kế mạch logic số, Kiến trúc của các IC khả trình), Giải pháp phần cứng FPGA của Xilinx cho thiết kế vi mạch số (Một số giải pháp cho thiết kế mạch logic số, Kiến trúc của FPGA), Giải pháp về phần mềm cho thiết kế vi mạch số (Giới thiệu các phần mềm hỗ trợ thiết kế, Quy trình thiết ké FPGA tổng quát, Phần mềm thiết kế ISE của Xilinx), Một số bài toán thiết kế mạch số trên FPGA (Điều khiển Led với Switch và Push button, Picoblaze_pwm_control, Chuyển đổi ADC, Điều khiển LCD).

Chủ đề:
Lưu

Nội dung Text: Bài giảng Thiết kế vi mạch lập trình được - Nguyễn Thế Dũng

  1. TRƯỜNG ĐH CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG KHOA CÔNG NGHỆ ĐIỆN TỬ VÀ TRUYỀN THÔNG BÀI GIẢNG MÔN THIẾT KẾ VI MẠCH LẬP TRÌNH ĐƯỢC BIÊN SOẠN : NGUYỄN THẾ DŨNG Thái Nguyên, tháng 8 năm 2012
  2. 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ủa FPGA ........................................................... 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 1
  3. 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 2
  4. 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 3
  5. Chương 1 KIẾN THỨC CƠ SỞ 1.1. Các khái niệm chung 1.1.1. Transistor Transistor là một linh kiện bán dẫn thường được sử dụng như một thiết bị khuếch đại hoặc một khóa điện tử. Transistor là phần tử cơ bản của mọi vi mạch số tích hợp, từ các cổng logic đơn giản AND, OR, NOT... đến các loại phức tạp như các mạch điều khiển ngoại vi, vi điều khiển, vi xử lý... Transistor là khối đơn vị cơ bản xây dựng nên cấu trúc mạch ở máy tính điện tử và tất cả các thiết bị điện tử hiện đại khác. Do đáp ứng nhanh và chính xác nên các transistor được sử dụng trong nhiều ứng dụng tương tự và số, như khuếch đại, đóng cắt, điều chỉnh điện áp, điều khiển tín hiệu, và tạo dao động. Transistor cũng thường được kết hợp thành mạch tích hợp (IC). Hình 1.1. Transistor Transistor được làm từ vật liệu bán dẫn (semiconductor), là vật liệu vừa có khả năng dẫn điện vừa có khả năng làm việc như những vật liệu cách điện, khả năng này thay đổi tùy theo kích thích từ bên ngoài như nhiệt độ, ánh sáng, trường điện từ, dòng điện. Chất bán dẫn dùng để cấu tạo transistor thường là Germany (Ge) hoặc Silicon (Si) được pha tạp một lượng nhỏ Photpho (P) hoặc Boron (B) với mục đích tăng mật độ electron (kiểu N) tự do hoặc tăng mật độ lỗ trống (kiểu P) tương ứng trong tinh thể bán dẫn. 1.1.2. Vi mạch số tích hợp Còn được gọi là IC - Intergrated Circuits, chip, là cấu trúc mạch điện được thu nhỏ bằng cách tích hợp chủ yếu từ các transitor với mật độ cao, ngoài ra còn có thể có các linh kiện điện thụ động khác trên một khối bán dẫn mỏng. Các vi mạch tích hợp đều có một số lượng tín hiệu đầu vào và đầu ra để thực hiện một chức năng cụ thể nào đó. 4
  6. a) b) Hình 1.2. a) Mô hình Vi mạch số tích hợp b) Vi mạch tích hợp thực tế Vi mạch tích hợp ra đời từ những năm 1960 và được ứng dụng rộng rãi trong thực tế, đã và đang tạo ra cuộc cách mạng trong lĩnh vực điện tử. Ví dụ về vi mạch tích hợp như các IC đa dụng (general purposes IC) họ 7400, 4000, các dòng vi xử lý 80x86 dùng trong máy vi tính, chíp xử lý dùng cho điện thoại di động, máy ảnh kỹ thuật số, các vi điều khiển dùng trong các thiết bị dân dụng, ti vi, máy giặt, lò vi sóng... Các vi mạch này có mật độ tích hợp từ hàng vài chục đến hàng trăm triệu, và hiện nay đã đến hàng tỷ transistor trong một miếng bán dẫn có kích thước xấp xỉ kích thước đồng xu. Mật độ tích hợp được định nghĩa là tổng số những phần tử tích cực (transistor hoặc cổng logic) chứa trên một đơn vị diện tích của khối tinh thể bán dẫn. Theo mật độ tích hợp chia ra các loại vi mạch sau: - Vi mạch cỡ nhỏ SSI (Small scale integration), có hàng chục transistor trong một vi mạch. - Vi mạch cỡ vừa MSI (Medium scale integration), có hàng trăm transistor trong một vi mạch. - Vi mạch cỡ lớn LSI (Large scale integration), có hàng ngàn đến hàng chục ngàn transistor trong một vi mạch. - Vi mạch cực lớn VLSI (Very large scale integration), có hàng vạn, hàng triệu, hàng chục triệu transistor và lớn hơn trong một vi mạch, tới thời điểm hiện nay đã xuất hiện nhưng vi mạch có độ tích hợp đến hàng tỷ transitor. - Vi mạch siêu lớn ULSI (Ultra large scale intergration), vi mạch có độ tích hợp với mức độ hàng triệu transistor trở lên. 1.1.3. Cổng logic Cổng logic hay logic gate là cấu trúc mạch điện (sơ đồ khối hình ) được lắp ráp từ các linh kiện điện tử để thực hiện chức năng của các hàm logic cơ bản 5
  7. y = f(x n, x n-1,..., x1, x0). Trong đó các tín hiệu vào xn-1, x n-2,..., x1, x0 của mạch tương ứng với các biến logic x n-1, x n-2,..., x1, x0 của hàm . Tín hiệu ra y của mạch tương ứng với hàm logic y. Với các cổng cơ bản thường giá trị n < 4. Hình 1.3. Mô hình cổng logic cơ bản Giá trị của các tín hiệu vào và ra chỉ có hai mức là mức thấp (Low - L) và mức cao (High - H) tương ứng với với hai giá trị 0 và 1 của các biến logic và hàm logic. 1.1.3.1. Một số cổng logic cơ bản: * Cổng logic AND Cổng AND là cổng logic thực hiện chức năng của phép toán nhân logic với 2 ngõ vào và 1 ngõ ra với ký hiệu như hình vẽ: Hình 1.4. Cổng logic AND Phương trình logic mô tả cổng logic AND: Hình 1.5. Bảng chân lý cổng logic AND Ngõ ra chỉ bằng mức 1 khi cả 2 ngõ vào bằng 1, ngõ ra bằng 0 khi một trong hai ngõ vào bằng 0. Cổng AND có thể có nhiều hơn 2 đầu vào. Trên một chip có thể có nhiều cổng AND. 6
  8. * Cổng logic OR Cổng OR là cổng logic thực hiện chức năng của phép toán cộng logic với 2 ngõ vào và 1 ngõ ra với ký hiệu như hình vẽ: Hình 1.6. Cổng logic OR Phương trình logic mô tả cổng logic OR: Hình 1.7. Bảng chân lý cổng logic OR Ngõ ra chỉ bằng mức 0 khi cả 2 ngõ vào bằng 0, ngõ ra bằng 1 khi một trong hai ngõ vào bằng 1. * Cổng logic NOT Còn gọi là cổng đảo (Inverter), có hình vẽ như sau: Hình 1.8. Cổng logic NOT Bảng chân lý của cổng logic NOT: Hình 1.9. Bảng chân lý của cổng logic NOT * Một số cổng logic thường gặp khác như NAND, NOR, EX-OR, EX-NOR... 1.1.3.2. Tham số thời gian của cổng logic: Các mạch logic đều được biểu diễn bằng các hệ hàm logic và do đó có thể phát biểu là: Mọi mạch logic đều có thể xây dựng từ các cổng logic cơ bản. Đối với các cổng logic cơ bản đó thì có hai tham số thời gian cơ bản: 7
  9. Hình 1.10. Tham số thời gian của cổng NOT Thời gian trễ lan truyền Tpd (Propagation delay) là thời gian tối thiểu kể từ thời điểm bắt đầu xảy ra sự thay đổi từ đầu vào X cho tới khi sự thay đổi này tạo ra thay đổi xác định tại đầu ra Y, hay nói một cách khác cho tới khi đầu ra Y ổn định giá trị. Tcd (Contamination delay) là khoảng thời gian kể từ thời điểm xuất hiện sự thay đổi của đầu vào X cho tới khi đầu ra Y bắt đầu xảy ra sự mất ổn định. Sau giai đoạn mất ổn định hay còn gọi là giai đoạn chuyển tiếp tín hiệu tại đầu ra sẽ thiết lập trạng thái xác định vững bền. Như vậy Tpd > Tcd và khi nhắc đến độ trễ của cổng thì là chỉ tới giá trị Tpd. 1.1.4. Phần tử nhớ 1.1.4.1. D-Latch và D-Flip Flop Latch và Flip Flop là các phần tử nhớ quan trọng trong thiết kế VLSI, sơ đồ cấu tạo chi tiết và mô tả đã được trình bày kỹ trong môn học Kỹ thuật số. Ở phần này chỉ nhắc lại những tính chất cơ bản nhất của các Flip Flop và bổ xung thêm các tham số thời gian thực của các phần tử này. Bảng 1.1. D-Flip Flop và D-Latch D-Latch là phần tử nhớ làm việc theo mức xung, cụ thể khi tín hiệu Clock bằng 1 thì giá trị Q đầu ra bằng giá trị đầu vào, khi tín hiệu Clock = 0 thì giá trị đầu ra không đổi. Nói một cách khác D-latch làm việc như một cửa đóng mở giữa tín hiệu Q và D tương ứng với mức điện áp của xung Clock. 8
  10. D- Flip Flop là phần tử nhớ làm việc theo sườn xung, có hai dạng sườn là sườn lên (rising edge) khi xung thay đổi từ 0->1 và sườn xuống (falling edge) khi xung thay đổi từ 1->0. Khi không có yêu cầu gì đặc biệt thì Flip Flop làm việc với sườn xung lên thường được sử dụng. Khác với D-Latch giá trị đầu ra của Flip Flop chỉ thay vào thời điểm sườn xung. Với cách làm việc như vậy giá trị đầu ra sẽ không thay đổi trong suốt thời gian một chu kỳ xung nhịp dù cho tín hiệu đầu vào thay đổi. D- Flip-Flop rất hay được dùng trong mạch có nhớ vì vậy đôi khi nói đến phần tử nhớ thường ngầm hiểu là D- Flip Flop. Hình 1.11. Đồ thị thời gian của D-Flip Flop và D Latch Đối với D-Flip Flop và D-Latch nhớ thì có hai tham số thời gian hết sức quan trọng là Tsetup, và Thold. Đây là tham số thời gian đối với dữ liệu đầu vào cổng Din để đảm bảo việc truyền dữ liệu sang cổng ra Qout là chính xác, cụ thể đối với Flip Flop. Tsetup: Là khoảng thời gian cần thiết cần giữ ổn định đầu vào trước sườn tích cực của xung nhịp Clock Thold: Là khoảng thời gian tối thiểu cần giữ ổn định dữ liệu đầu vào sau sườn tích cực của xung nhịp Clock. Hình 1.12. Tham số thời gian của D-Flip Flop 9
  11. 1.1.5. Mạch logic tổ hợp Mạch logic tổ hợp (Combinational logic circuit) là mạch mà giá trị tổ hợp tín hiệu ra tại một thời điểm chỉ phụ thuộc vào giá trị tổ hợp tín hiệu vào tại thời điểm đó. Hiểu một cách khác mạch tổ hợp không có trạng thái, không chứa các phần tử nhớ mà chỉ chứa các phần tử thực hiện logic chức năng như AND, OR, NOT ... Đối với mạch tổ hợp tham số thời gian trễ Tdeíay là khoảng thời gian lớn nhất kể từ thời điểm xác định tất cả các giá trị đầu vào cho tới thời điểm tất cả các kết quả ở đầu ra trở nên ổn định. Trên thực tế với vi mạch tích hợp việc thời gian trễ rất nhỏ nên việc tìm tham số độ trễ của mạch được thực hiện bằng cách liệt kê tất cả các đường biến đổi tín hiệu có thể từ tất cả các đầu vào tới tất cả đầu ra sau đó dựa trên thông số về thời gian của các cổng và độ trễ đường truyền có thể tính được độ trễ của các đường truyền này và tìm ra đường truyền có độ trễ lớn nhất, giá trị đó chính là Tdelay. Hình 1.13. Độ trễ của mạch tổ hợp Minh họa cho độ trễ trong mạch tổ hợp như hình 1.1.3. Về lý thuyết để xác định độ trễ của mạch cần liệt kê tất cả các đường tín hiệu từ 4 đầu vào In1, In2, In3, In4 đến 2 đầu ra Outl, Out2. Đối với mỗi cặp đầu ra đầu vào tồn tại nhiều đường truyền khác nhau vì vậy tổng số lượng các đường truyền này thường rất lớn. Chính vì thế đối với những mạch tổ hợp lớn thì việc xác định độ trễ đều phải thực hiện bằng sự hỗ trợ của máy tính. Ví dụ để xác định độ trễ của hai đường truyền 1 và 2 trên hình vẽ: Đường lần lượt đi qua các cổng NOT, AND_4, NOR, AND_3, OR. Đường 2 lần lượt đi 10
  12. qua cổng NOT, AND, OR_4, AND_4, OR_4. Độ trễ của các đường truyền này tính bằng độ trễ của các cổng nó đi qua cộng với độ trễ dây dẫn (TWrite). T1 = TNOT + TAND_ 4 + TNOR + TAND_3 + TAND_3 + TWire1 T2 = TNOT + TAND + TOR_4 + TAND_4 + TOR_4 + TWire2 Do độ trễ của cổng nhiều đầu vào lớn hơn độ trễ của cổng ít đầu vào nên mặc dù số cổng đi qua trên đường truyền như nhau nhưng đường truyền 2 sẽ có độ trễ lớn hơn đường 1. Các đường truyền có độ trễ lớn nhất được gọi là Critical paths. Các đường truyền này cần đặc biệt quan tâm trong quá trình tối ưu hóa độ trễ của mạch. 1.1.6. Mạch logic tuần tự Mạch logic dãy (Sequential logic circuits) còn được gọi là mạch logic tuần tự là mạch số mà tín hiệu ra tại một thời điểm không những phụ thuộc vào tổ hợp tín hiệu đầu vào tại thời điểm đó mà còn phụ thuộc vào tín hiệu vào tại các thời điểm trước đó. Hiểu một cách khác mạch dãy ngoài các phần tử tổ hợp có chứa các phần tử nhớ và nó lưu trữ lớn hơn một trạng thái của mạch. Tham số thời gian của mạch tuần tự được tính khác với mạch tổ hợp, sự khác biệt đó có quan hệ mật thiết với đặc điểm của tín hiệu đồng bộ Clock. Ví dụ với một mạch tuần tự điển hình dưới đây. Mạch tạo từ hai lớp thanh ghi sử dụng Flip Flop A và B, trước giữa và sau thanh ghi là ba khối logic tổ hợp Combinational logic 1, 2, 3, các tham số thời gian cụ thể như sau: Td1, Td2, Td3. Là thời gian trễ tương ứng của 3 khối mạch tổ hợp 1, 2, 3. Tsa, Tsb là thời gian thiết lập (Tsetup) của hai Flipflop A, B tương ứng Tclk-q. là khoảng thời gian cần thiết để dữ liệu tại đầu ra Q xác định sau thời điểm kích hoạt của sườn Clock Hình 1.14. Tham số thời gian của mạch tuần tự 11
  13. Đối với mạch đồng bộ thì sẽ là lý tưởng nếu như điểm kích hoạt (sườn lên hoặc sườn xuống) của xung nhịp Clock tới các Flip Flop cùng một thời điểm. Tuy vậy trên thực tế bao giờ cũng tồn tại độ trễ giữa hai xung Clock đến hai Flip Flop khác nhau. Tskew là độ trễ lớn nhất của xung nhịp Clock đến hai Flip Flop khác nhau trong mạch. Thời gian chênh lệch lớn nhất giữa tín hiệu xung nhịp, thời gian trễ này sinh ra do độ trễ trên đường truyền của xung Clock từ A đến B. Trên thực tế Tskew giữa hai Flip Flop liên tiếp có giá trị rất bé so với các giá trị độ trễ khác và có thể bỏ qua, nhưng đối với những mạch cỡ lớn khi số lượng Flip Flop nhiều hơn và phân bố xa nhau thì giá trị Tskew có giá trị tương đối lớn. Những tham số trên cho phép tính toán các đặc trưng thời gian của mạch tuần tự đó là: - Thời gian trễ trước xung nhịp Clock tại đầu vào: Tinput_delay = Td1 + Tsa - Thời gian trễ sau xung nhịp Clock tại đầu ra: Toutput_delay = Td3 + Tclk-q - Chu kỳ tối thiểu của xung nhịp Clock, hay là khoảng thời gian tối thiểu đảm bảo cho dữ liệu trong mạch được xử lý và truyền tải giữa hai lớp thanh ghi liên tiếp mà không xảy ra sai sót. Nếu xung nhịp đầu vào có chu kỳ nhỏ hơn Tclk_min thì mạch sẽ không thể hoạt động theo thiết kế. Tclk_min = Tclk-q + Td2 + Tsb + Tskew - Từ đó tính được xung nhịp tối đa của vi mạch là: Fmax = 1/ Tclk_min = 1/( Tclk-q + Td2 + Tsb + Tskew) 1.2. Các phương pháp thể hiện thiết kế Có hai phương pháp cơ bản được sử dụng để mô tả vi mạch số là mô tả bằng sơ đồ logic (schematic) và mô tả bằng ngôn ngữ mô tả phần cứng HDL (Hardware Description Language). 1.2.1. Mô tả bằng sơ đồ Vi mạch được mô tả trực quan bằng cách ghép nối các phần tử logic khác nhau một cách trực tiếp giống như ví dụ ở hình vẽ dưới đây. Thông thường các phần tử không đơn thuần là các đối tượng đồ họa mà còn có các đặc tính vật lý gồm chức năng logic, thông số tải vào ra, thời gian trễ... Những thông tin này được lưu trữ trong thư viện logic thiết kế. Mạch vẽ ra có thể được mô phỏng để kiểm tra chức năng và phát hiện và sửa lỗi một cách trực tiếp. 12
  14. Hình 1.15. Mô tả mạch số bằng sơ đồ Ngày nay, các mạch tích hợp ngày càng thực hiện được nhiều chức năng do đó mà vấn đề thiết kế mạch càng trở nên phức tạp. Những phương pháp truyền thống như dùng phương pháp tối thiểu hoá hàm Boolean hay dùng sơ đồ các phần tử không còn đáp ứng được các yêu cầu đặt ra khi thiết kế. Nhược điểm lớn nhất của các phương pháp này là chúng chỉ mô tả được hệ thống dưới dạng mạng nối các phần tử với nhau. Người thiết kế cần phải đi qua hai bước thực hiện hoàn toàn thủ công: đó là chuyển từ các yêu cầu về chức năng của hệ thống sang biểu diễn theo dạng hàm Boolean, sau các bước tối thiểu hoá hàm này ta lại phải chuyển từ hàm Boolean sang sơ đồ mạch của hệ thống. Cũng tương tự khi phân tích một hệ thống người phân tích cần phải phân tích sơ đồ mạch của hệ thống, rồi chuyển nó thành các hàm Boolean, sau đó mới lập lại các chức năng, hoạt động của hệ thống. Tất cả các bước nói trên hoàn toàn phải thực hiện thủ công không có bất kỳ sự trợ giúp nào của máy tính. Người thiết kế chỉ có thể sử dụng máy tính làm công cụ hỗ trợ trong việc vẽ sơ đồ mạch của hệ thống và chuyển từ sơ đồ mạch sang công cụ tổng hợp mạch vật lý dùng công cụ Synthesis. Một nhược điểm khác nữa của phương pháp thiết kế truyền thống là sự giới hạn về độ phức tạp của hệ thống được thiết kế .Phương pháp dùng 13
  15. hàm Boolean chỉ có thể dùng để thiết kế hệ thống lớn nhất biểu diễn bởi vài trăm hàm. Còn phương pháp dựa trên sơ đồ chỉ có thể dùng để thiết kế hệ thống lớn nhất chứa khoảng vài nghìn phần tử. 1.2.2. Mô tả bằng HDL Sự ra đời của ngôn ngữ mô phỏng phần cứng (HDL) đã giải quyết được rất nhiều nhược điểm lớn của các phương pháp thiết kế trước đây: Nếu các phương pháp cũ đòi hỏi phải chuyển đổi từ mô tả hệ thống (các chỉ tiêu về chức năng) sang tập hợp các hàm logic bằng tay thì bước chuyển đó hoàn toàn không cần thiết khi dùng HDL. Hầu hết các công cụ thiết kế dùng ngôn ngữ mô phỏng phần cứng đều cho phép sử dụng biểu đồ trạng thái cho các hệ thống tuần tự cũng như cho phép sử dụng bảng chân lý cho hệ thống tổng hợp. Việc chuyển đổi từ các biểu đồ trạng thái và bảng chân lý sang mã ngôn ngữ mô phỏng phần cứng được thực hiện hoàn toàn tự động. Nhờ tính dễ kiểm tra thử nghiệm hệ thống trong suốt quá trình thiết kế mà người thiết kế có thể dễ dàng phát hiện các lỗi thiết kế ngay từ những giai đoạn đầu, giai đoạn chưa đưa vào sản xuất thử, do đó tiết kiệm được lượng chi phí đáng kể bởi từ ý thiết kế đến tạo ra sản phẩm đúng như mong muốn là một việc rất khó tránh khỏi những khó khăn, thất bại. Khi mọi lĩnh vực của khoa học đều phát triển không ngừng thì sự phức tạp của hệ thống điện tử cũng ngày một tăng theo và gần như không thể tiến hành thiết kế thủ công mà không có sự trợ giúp cuả các loại máy tính hiện đại. Ngày nay, ngôn ngữ mô tả phần cứng HDL được dùng nhiều để thiết kế cho các thiết bị logic lập trình được PLD từ loại đơn giản đến các loại phức tạp như ma trận cổng lập trình được FPGA. Có ba ngôn ngữ mô tả phần cứng phổ biến hiện nay là: 1.2.1.1. Verilog HDL Ra đời năm 1983, do hai kỹ sư Phil Moorby và Prabhu Goel làm việc tại Automated Integrated Design Systems (sau này thuộc sở hữu của Cadence). Verilog được IEEE chính thức tiêu chuẩn hóa vào năm 1995 và sau đó là các phiên bản năm 2001, 2005. Đây là một ngôn ngữ mô tả phần cứng có cấu trúc và cú pháp gần giống với ngôn ngữ lập trình C, ngoài khả năng hỗ trợ thiết kế logic thì Verilog rất mạnh trong việc hỗ trợ cho quá trình kiểm tra thiết kế. Một số đặc điểm của Verilog: - Verilog là một trong những phương thức thiết bị có thể xử lý nhiều mức thiết kế khác nhau. Nó có thể chuẩn hóa dữ liệu chuyển đến giữa các giai đoạn thiết bị và làm đơn giản hóa lập tài liệu. 14
  16. - Nền tảng mạnh: Chuẩn hóa 1995 bởi IEEE, hỗ trợ công nghiệp, phổ biến cho các nhà ASIC vì dễ học cho phép mô phỏng nhanh và tổng hợp hiệu quả. - Tính đa năng: Cho phép quá trình thiết kế thực thể thực hiện trong môi trường thiết kế cả phân tích và kiểm tra. Tuy nhiên Verilog không thích hợp lắm cho các thiết kế mức hệ thống phức tạp, đây là trở ngại chính của Verilog. - Hỗ trợ công nghiệp: Phổ biến cho các nhà thiết kế ASIC vì dễ học , cho phép mô phỏng nhanh và tổng hợp hiệu quả. - Có khả năng mở rộng IEEE Std 1364 chứa định nghĩa của PLI Verilog (Programming Language Interface) cho phép mở rộng khả năng của Verilog. Nó là một tập hợp các bộ định tuyến cho phép các chức năng bên ngoài truy nhập thông tin chức năng thiết kế Verilog. - Một module Verilog có thể thể hiện được cả giao diện và thân chương trình của một hệ thống. 1.2.1.2. VHDL VHDL viết tắt của Very-high-speed intergrated circuits Hardware Description Language, hay ngôn ngữ mô tả cho các mạch tích hợp tốc độ cao. VHDL lần đầu tiên được phát triển bởi Bộ Quốc Phòng Mỹ nhằm hỗ trợ cho việc thiết kế những vi mạch tích hợp chuyên dụng (ASICs). VHDL cũng được IEEE chuẩn hóa vào các năm 1987, 1991, 2002, và 2006 và mới nhâts 2009. VHDL được phát triển dựa trên cấu trúc của ngôn ngữ lập trình Ada. Cấu trúc của mô tả VHDL tuy phức tạp hơn Verilog nhưng mang tính logic chặt chẽ và gần với phần cứng hơn. VHDL được phát triển như một ngôn ngữ độc lập không gắn với bất kỳ một phương pháp thiết kế, một bộ mô tả hay công nghệ phần cứng nào. Người thiết kế có thể tự do lựa chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất. Và khi đem so sánh với các ngôn ngữ mô phỏng phần cứng khác ta thấy VHDL có một số ưu điểm hơn hẳn các ngôn ngữ khác: - Thứ nhất là tính công cộng: 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. - Thứ hai là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết kế. VHDL cho phép thiết kế bằng nhiều phương pháp 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 15
  17. 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. - 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 mới ra đời nó có thể được áp dụng ngay cho các hệ thống đã thiết kế. - 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 số 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. Như thế ta có thể mô phỏng một bản thiết kế bao gồm cả các hệ con được mô tả chi tiết. - 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. Cũng như một nhóm thiết kế có thể trao đổi mô tả mức cao của các hệ thống con trong một hệ thống lớn (trong đó các hệ con đó được thiết kế độc lập). - 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. Bên trong ngôn ngữ VHDL có nhiều tính năng hỗ trợ việc quản lý, thử nghiệm và chia sẻ thiết kế. Và nó cũng cho phép dùng lại các phần đã có sẵn. Ngoài hai ngôn ngữ kể trên còn có ngôn ngữ Altera HDL được phát triển bởi công ty bán dẫn Altera với mục đích dùng thiết kế cho các sản phẩm FPGA và CPLD của Altera. AHDL có cấu trúc hết sức chặt chẽ và là ngôn ngữ rất khó sử dụng nhất so với 2 ngôn ngữ trên. Bù lại AHDL cho phép mô tả thực thể logic chi tiết và chính xác hơn. Ngôn ngữ này ít phổ biến tuy vậy nó cũng được rất nhiều chương trình phần mềm hỗ trợ mô phỏng biên dịch. 1.2. Yêu cầu với một thiết kế mạch logic số Yêu cầu đối với một thiết kế IC bao gồm: - Yêu cầu chức năng: Mạch gồm có các đầu vào đầu ra như thế nào, thực hiện nhiệm vụ gì... 16
  18. - Yêu cầu về mặt công nghệ: Mạch thiết kế sử dụng nền công nghệ bán dẫn nào PLD, ASIC, FPG A. . - Yêu cầu về mặt tài nguyên: Giới hạn về số lượng cổng, số lượng transitors, về diện tích quy đổi chuẩn, về kích thước của IC thiết kế. - Yêu cầu về khả năng làm việc (performance): là yêu cầu về các tham số thời gian của mạch bao gồm độ trễ cổng vào, độ trễ cổng ra, độ trễ logic với mạch tổ hợp, các xung nhịp làm việc, số lượng xung nhịp cho một chu trình xử lý dữ liệu, số lượng dữ liệu xử lý trên một đơn vị thời gian. - Yêu cầu về mức tiêu hao năng lượng (power consumtion). - Yêu cầu về chi phí cho quá trình thiết kế và chế tạo (design cost). Các yêu cầu kể trên có quan hệ mật thiết với nhau và thông thường chúng không thể đồng thời đạt được tối ưu. Ví dụ năng lượng tiêu thụ của mạch muốn nhỏ thì số lượng cổng sử dụng hạn chế và sẽ hạn chế tốc độ làm việc, hoặc việc sử dụng các công nghệ rẻ tiền hơn hoặc dùng các cổng công xuất thấp cũng là nhân tố giảm hiệu năng làm việc của mạch. Trong thực tế các IC phục vụ các mục đích khác nhau thì có yêu cầu khác nhau và người lập kế hoạch thiết kế chế tạo IC cần phải cân đối giữa các tiêu chí để có một phương án tối ưu nhất. Ví dụ cùng là vi xử lý nhưng nếu dùng thì không có yêu cầu đặc biệt về mặt tiêu hao năng lượng do nguồn cấp là cố định, khi đó Chip phải được thiết kế để có hiệu suất làm việc tối đa. Trong khi vi xử lý cho máy tính xách tay thì cần phải thiết kế để có mức tiêu thụ năng lượng thấp nhất có thể hoặc để có thể hoạt động ở nhiều mức tiêu thụ năng lượng khác nhau nhằm kéo dài thời gian sử dụng. Chip điều khiển cho các thiết bị di động thì cần phải tối ưu hết mức mức tiêu tốn năng lượng bằng cách thu gọn thiết kế, giảm thiểu những tập lệnh không cần thiết và sử dụng các phần tử tiết kiệm năng lượng nhất. 1.3. Các công nghệ thiết kế mạch logic số Vi mạch số đơn giản có thể được thiết kế thủ công (Manual IC design), nhưng với các vi mạch số cỡ lớn thì quá trình thiết kế buộc phải sử dụng các chương trình hỗ trợ thiết kế trên máy tính (Design Automation) Manual design: Vi mạch số có thể được thiết kế bởi cách ghép nối các linh kiện bán dẫn rời rạc. Sự ra đời các IC đa dụng họ 74XX hay 40XX cho phép người sử dụng có thể tự thiết kế những mạch số cỡ nhỏ và cỡ vừa bằng cách ghép nối trên một bản mạch in. Nhờ có cấu trúc chuẩn hóa, có thể dễ dàng ghép nối, tạo những mạch chức năng khác nhau. Trên thực tế những mạch dạng 17
  19. này đã và vẫn đang được ứng dụng rộng rãi. Điểm hạn chế duy nhất của những thiết kế dạng này là chúng chỉ phù hợp cho những thiết kế SSI đơn giản do giới hạn về mật độ tích hợp và tốc độ làm việc thấp. Hình 1.16. Phân loại thiết kế vi mạch số Design Automation: Máy tính là một sản phẩm đặc trưng nhất của nền công nghiệp sản xuất chế tạo bán dẫn nhưng ngay sau khi ra đời đã trở thành công cụ đắc lực cho việc thiết kế mô phỏng IC nói riêng và các thiết bị khác nói chung. Tự động hóa thiết kế không những giúp đơn giản hóa và rút ngắn đáng kể thời gian thiết kế sản phẩm mà còn đem lại những khả năng mà quá trình thiết kế thủ công bởi con người không làm được đó là: Khả năng làm việc với những thiết kế phức tạp tới cỡ hàng nghìn đến hàng tỷ transitor. Khả năng xử lý những bài toán tối ưu với nhiều tiêu chí và nhiều điều kiện ràng buộc phức tạp. Khả năng tự động tổng hợp thiết kế từ các mức trừu tượng cao xuống các mức trừu tượng thấp hơn một cách chính xác, nhanh chóng. Đơn giản hóa việc lưu trữ và trao đổi dữ liệu thiết kế. Các phần mềm hỗ trợ thiết kế gọi chung là CAD Tools, trong lĩnh vực 18
  20. thiết kế ASIC có 3 hệ thống phần mềm phổ biến của Cadence®, Synopsys®, Magma® Design Automation Inc. Trong thiết kế trên FPGA phổ biến có Xilinx, Altera. Trong tự động hóa thiết kế IC thường phân biệt thành những quy trình như sau: Full-custom ASIC: Là quy trình thiết kế IC có mức độ chi tiết cao nhất nhằm thu được sản phẩm có hiệu quả làm việc cao nhất trong khi vẫn đạt tối ưu về mặt tài nguyên trên nền một công nghệ bán dẫn nhất định. Để đạt được mục đích đó thiết kế không những được tối ưu ở những mức cao mà còn được tối ưu ở mức độ bố trí transitor và kết nối giữa chúng, ví dụng hai khối logic cùng thực hiện hàm OR nhưng phân bố ở hai vị trí khác nhau thì được cấu trúc bằng các mạch transitor khác nhau, phụ thuộc vào các thông số khác như tải đầu vào đầu ra, vị trí, ảnh hưởng các khối liền kề. Chính vì thế Full-custom ASIC đôi khi còn được gọi là random-logic gate networks nghĩa là mạch tạo bởi những cổng không đồng nhất. Semi-custom ASIC design: Phân biệt với Full-custom ASIC design, khái niệm này chỉ quy trình thiết kế mà mức độ chi tiết không đạt đến tối đa, thông thường thiết kế đạt chi tiết đến mức cổng logic hoặc cao hơn. Do Full-custom ASIC có độ phức tạp cao nên không những chi phí cho quá trình thiết kế rất lớn mặt khác thời gian dành cho thiết kế có thể kéo dài hàng vài năm trở lên, trong thời gian đó có thể đã có những công nghệ mới ra đời, mỗi một thay đổi nhỏ kéo theo việc phải làm lại gần như toàn bộ thiết kế và phát sinh thêm chi phí rất nhiều do vậy lợi nhuận sản phẩm bán ra thấp hay thậm chí thua lỗ. Semi- custom ASIC cân bằng giữa chi phí thiết kế và lợi nhuận thu được sản phẩm bằng cách đẩy nhanh và giảm thiểu chi phí cho quá trình thiết kế, dĩ nhiên bù lại sản phẩm làm ra không đạt được mức tối ưu lý thuyết như Full-custom design. Có nhiều dạng Semi-custom design nhưng một trong những kiểu cơ bản mà thường được sử dụng là thiết kế trên cơ sở thư viện cổng chuẩn (Standard Cell Library), thư viện này là tập hợp của các cổng logic như AND, OR, XOR, thanh ghi. và vì chúng có cùng kích thước chiều cao nên được gọi là cổng chuẩn. ASIC based on Programmable Device: Thiết kế ASIC trên cơ sở IC khả trình. Chíp khả trình (Programmable device) được hiểu là IC chứa những phần tử logic có thể được lập trình can thiệp để tái cấu trúc nhằm thực hiện một chức năng nào đó. Quá trình tái cấu trúc thực hiện thông qua ngôn ngữ mô tả phần 19
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2