Giáo trình Điện tử số (Phần 2)

pdf 119 trang phuongnguyen 7740
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Điện tử số (Phần 2)", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_dien_tu_so_phan_2.pdf

Nội dung text: Giáo trình Điện tử số (Phần 2)

  1. HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG ĐIỆN TỬ SỐ (Dùng cho sinh viên hệ đào tạo đại học từ xa) Lưu hành nội bộ HÀ NỘI - 2006
  2. Chương 6: Mạch phát xung và tạo dạng xung CHƯƠNG 6: MẠCH PHÁT XUNG VÀ TẠO DẠNG XUNG GIỚI THIỆU Hầu hết các hệ thống kỹ thuật số đều yêu cầu một vài loại dạng sóng định thời, ví dụ một nguồn xung của bộ dao động cần thiết cho tất cả các hệ thống tuần tự định thời. Trong các hệ thống kỹ thuật số, một dạng sóng xung vuông thường được sử dụng nhất. Sự tạo ra các dạng sóng xung vuông được gọi là bộ đa hài. Có ba loại bộ đa hài: • Bộ dao động đa hài (chạy tự do). • Bộ đa hài đơn ổn (một nhịp). • Bộ đa hài hai trạng thái ổn định (trigơ). Một bộ dao động đa hài chỉ là một bộ dao động để tạo ra dạng xung. Nó có hai trạng thái chuẩn mà không yêu cầu sự kích hoạt từ bên ngoài. Bộ này thường được dùng làm xung điều khiển cho các mạch tuần tự. Một bộ đa hài đơn ổn chỉ có một trạng thái ổn định, tức là trong điều kiện trạng thái ổn định thì đầu ra của nó cố định. Đầu ra này ở trạng thái LOW hoặc ở trạng thái HIGH. Mạch này cần một xung kích khởi từ bên ngoài để cho mạch chuyển sang trạng thái khác. Mạch này vẫn giữ nguyên trạng thái cũ trong một khoảng thời gian, khoảng thời gian này phụ thuộc vào các thành phần được dùng trong mạch. Trạng thái của mạch này được xem là trạng thái ổn định bởi vì nó phục hồi trở về trạng thái ổn định mà không cần bất kỳ xung kích hoạt nào từ bên ngoài. Độ rộng của xung kích khởi rất nhỏ, độ rộng của xung đầu ra chỉ phụ thuộc vào khoảng thời gian mà mạch giữ lại ở trạng thái ổn định. Mạch này được gọi là mạch một nhịp (one-shot) bởi vì một xung kích khởi chỉ tạo được một xung nhưng độ rộng xung lại khác. Mạch này rất hữu dụng bởi vì nó có thể tạo ra một xung tương đối dài (hàng chục mili giây) từ một xung hẹp, do đó nó còn được gọi là bộ giảm xung (pulse stretcher). Ví dụ, một bộ vi xử lý có thể phát tín hiệu cho một thiết bị bên ngoài để in một nội dung nào đó bằng cách truyền qua một xung. Thiết bị đầu ra nói chung có tốc độ chậm hơn bộ vi xử lý, do đó nó yêu cầu một xung tín hiệu trong một khoảng thời gian lâu hơn. Điều này đạt được bằng một mạch giao tiếp có chứa bộ đa hài đơn ổn. Một mạch đa hài trong đó cả hai trạng thái đều ổn định thì được gọi là mạch đa hài hai trạng thái ổn định hay trigơ. Mạch này thực hiện việc chuyển tiếp từ một trạng thái ổn định này sang một trạng thái ổn định khác chỉ lúc xung kích khởi được áp vào. Mạch này thường được dùng làm các thành phần trong bộ nhớ trong các hệ thống kỹ thuật số và đã được thảo luận ở chương 5. Chương này tập trung vào sơ đồ, nguyên tắc hoạt động, ứng dụng của các mạch dao động đa hài, mạch dao động đa hài đợi, trigơ Schmitt dựa trên các cổng TTL, CMOS và IC định thời 555. Sau chương này độc giả có thể tự thiết kế các mạch dao động theo các yêu cầu cơ bản cho các ứng dụng khác nhau. 125
  3. Chương 6: Mạch phát xung và tạo dạng xung NỘI DUNG 6.1. MẠCH PHÁT XUNG 6.1.1. Mạch dao động đa hài cơ bản cổng NAND TTL Cổng NAND khi làm việc trong vùng chuyển tiếp có thể khuếch đại mạnh tín hiệu đầu vào. Nếu 2 cổng NAND được ghép điện dung thành mạch vòng như hình 6-1 ta được bộ dao động đa hài.VK là đầu vào điều khiển, khi ở mức cao mạch phát xung, và khi ở mức thấp mạch ngừng phát. Hình 6-1. Bộ dao động đa hài cấu trúc bằng cổng NAND Nếu các cổng I và II thiết lập điểm công tác tĩnh trong vùng chuyển tiếp và VK = 1, thì mạch sẽ phát xung khi được nối nguồn. Nguyên tắc làm việc của mạch như sau: Giả sử do tác động của nhiễu làm cho Vi1 tăng một chút, lập tức xuất hiện quá trình phản hồi dương sau: Khi đó, cổng I nhanh chóng trở thành thông bão hoà, cổng II nhanh chóng ngắt, mạch bước vào trạng thái tạm ổn định. Lúc này, C1 nạp điện và C2 phóng điện theo mạch đơn giản hoá được thể hiện trong hình 6-2. C1 nạp đến khi Vi2 tăng đến ngưỡng thông VT, trong mạch xuất hiện quá trình phản hồi dương như sau: Kết quả quá trình này là: cổng I nhanh chóng ngắt còn cổng II thông bão hoà, mạch điện bước vào trang thái tạm ổn định mới. Lúc này C2 nạp điện còn C1 phóng cho đến khi Vi1 bằng ngưỡng thông VT làm xuất hiện quá trình phản hồi dương đưa mạch về trạng thái ổn định ban đầu. Mạch không ngừng dao động, khi bỏ qua điện trở đầu ra của các cổng NAND, dựa vào hình 6-2 giản đồ xung của mạch được thể hiện trên hình 6-3. 126
  4. Chương 6: Mạch phát xung và tạo dạng xung E C V H2 E C V H2 R f2 R 1 R 1 R f2 V i2 + V L1 V C 1 - + i2 - V L1 C 1 V H2 C +-2 - V H2 C 2 + R f1 V i1 V L1 R f1 V i1 V L1 Hình 6-2. Mạch vòng nạp phóng điện của tụ C1, C2 Hình 6-3. Dạng sóng gần đúng của điện áp tại các điểm trên mạch bộ dao động đa hài. Vì thời gian nạp điện nhanh hơn thời gian phóng, nên thời gian duy trì trạng thái ổn định tạm thời phụ thuộc vào thời gian nạp điện của hai tu điện C1 và C2. Từ hình 6-2 ta có thời gian nạp điện của tu C1 là τ1 = (Rf2 // R1) C1, thời gian để Vi2 nạp điện đến VT là: 2VOH − (VT + VOL ) t M 2 = ()R f 2 // R1 C1 ln VOH − VT Nếu Rf1=Rf2=Rf, C1=C2=C, VOH=3 V, VOL=0,35 V, VT = 1,4 V thì ta có: T ≈ 2(R f // R1 )C T là chu kỳ của tín hiệu đa hài lối ra. 127
  5. Chương 6: Mạch phát xung và tạo dạng xung 6.1.2. Mạch dao động đa hài vòng RC Hình 6-4. Bộ dao động vòng và dạng sóng Bộ dao động vòng có cấu trúc gồm 3 cổng NAND mắc nối tiếp như hình 6-4. Phản hồi dương từ Vo đến Vi1 làm cho mạch này không có trạng thái ổn định. Tần số của tín hiệu lối ra phụ thuộc vào thời gian trễ của cổng NAND, và không thể điều chỉnh được tần số này. Tần số của mạch phát sẽ điều chỉnh được khi một mạch trễ RC được mắc thêm vào mạch như hình 6-5. Tần số dao động của mạch điều chỉnh được thông qua giá trị của tụ điện C và điện trở R. Hình 6-5. Bộ dao động đa hài có mạch RC 6.1.3. Mạch dao động đa hài thạch anh Để có các tín hiệu đồng hồ có tần số chính xác và có độ ổn định cao, các mạch đa hài trình bày trên đây không đáp ứng được. Tinh thể thạch anh thường được sử dụng trong các trường hợp này. Thạch anh có tính ổn định tần số tốt, hệ số phẩm chất rất cao dẫn đến tính chọn lọc tần số rất cao. Hình 6-6 là một mạch dao động đa hài điển hình sử dụng tinh thể thạch anh. Tần số của mạch dao động chỉ phụ thuộc vào tinh thể thạch anh mà không phụ thuộc vào giá trị các tụ điện và điện trở trong mạch. Hình 6-6. Mạch dao động đa hài thạch anh 6.1.4. Mạch dao động đa hài CMOS Hình 6-7a là mạch dao động đa hài cơ bản sử dụng hai cổng NOR CMOS và các linh kiện định thời trở và tụ. Giản đồ xung của mạch được thể hiện trên hình 6-7b. Chu kỳ dao động của mạch được tính gần đúng như sau: 128
  6. Chương 6: Mạch phát xung và tạo dạng xung Hình 6-7. Bộ dao động đa hài dùng cổng NOR CMOS và giản đồ xung ⎛ E E ⎞ T = T + T = RCln⎜ D + D ⎟ 1 2 ⎜ ⎟ ⎝ E D − VT VT ⎠ Nếu giả thiết VT = ED/2 thì T1 = T2, khi đó T = RCln4 ≈ 1,4RC. 6.2. TRIGƠ SCHMIT EC R1 R2 R4 R5 R7 T 4 D1 T 2 D3 V i V o T 1 T D4 AP 3 Z T 5 D0 R3 R6 Đầu vào Mạch Schmit Đầu Ra Hình 6-8. Sơ đồ nguyên lý của trigơ Schmit Hình 6-8 là sơ đồ nguyên lý của trigơ schmitt, hay còn được gọi là bộ đảo pha trigơ schmit. Nó gồm 3 phần: mạch đầu vào, mạch schmit và tầng công suất lối ra. Nguyên tắc làm việc của mạch như sau: Nếu VB1 ở mức thấp thì T1 ngắt, T2 thông bão hoà và ngược lại nếu VB1 ở mức cao thì T1 thông bão hoà, T2 ngắt. Khi VB1 tăng từ mức thấp lên mức cao đến trị số VBE1 = VB1 - ILR3 = 0,5 V thì T1 bắt đầu chuyển từ trạng thái ngắt vào trạng thái khuếch đại. Do VB1 tiếp tục tăng nên VCE1 = VBE2 giảm xuống. Sau khi T2 rời khỏi trạng thái bão hoà mà VB1 tiếp tục tăng thì xảy ra quá trình phản hồi dương sau: 129
  7. Chương 6: Mạch phát xung và tạo dạng xung Nhờ phản hồi dương mạch điện nhanh chóng chuyển sang trạng thái T1 thông bão hoà, T2 ngắt. Nếu VB1 sau khi tăng đến cực đại thì bắt đầu giảm; khi VB1 giảm đến mức làm T1 ra khỏi vùng bão hoà, T2 ra khỏi vùng ngắt thì mạch điện lại xảy ra quá trình phản hồi dương sau: Kết quả mạch điện nhanh chóng lật sang trạng thái T1 ngắt, T2 thông bão hoà. Chúng ta gọi giá trị điện áp đầu vào VI trong quá trình tăng lên của nó đạt đến ngưỡng làm lật mạch schmit để đầu ra từ mức cao xuống mức thấp là ngưỡng trên VT+ và giá trị ngược lại là ngưỡng dưới của trigơ schmit VT-(hình 6- 9). Hiệu điện áp tương ứng với ngưỡng trên và ngưỡng dưới được gọi là đọ chênh lệch điện áp chuyển mạch ΔV = VT+ - VT-. Hình 6-9. Dạng sóng đầu vào VI và đầu ra VO của trigơ schmit Trigơ schmit thực chất là một bộ so sánh hai ngưỡng nên nó được dùng ứng dụng khác nhau như: Các mạch dao động, các mạch so sánh, lọc nhiễu v.v 6.3. MẠCH ĐA HÀI ĐỢI Mạch đa hài đợi có một trạng thái ổn định và một trạng thái tạm ổn định. Khi có tác dụng của xung ngoài, mạch có thể chuyển đổi từ trạng thái ổn định sang trạng thái tạm ổn định. Sau khi duy trì một thời gian, mạch sẽ tự động quay lại trạng thái ổn định. Thời gian tạm ổn định phụ thuộc vào các thông số của mạch mà không phụ thuộc vào xung kích. Mạch đa hài được ứng dụng trong các mach định thời, tạo dạng xung, trễ v.v 6.3.1. Mạch đa hài đợi CMOS 1. Mạch đa hài đợi kiểu vi phân ED R Vo1 V I V C i2 V o Hình 6-10. Đa hài đợi kiểu vi phân dùng cổng NOR CMOS 130
  8. Chương 6: Mạch phát xung và tạo dạng xung ED VI ED VO1 ED VT VI2 ED VO2 T W Hình 6-11. Dạng song của mạch đa hài đơi kiểu vi phân Hình 6-10 là sơ đồ nguyên lý của mach đa hài đợi kiểu vi phân. Tại trạng thái ổn định, VI=0 thì VO1=ED, VI2=ED, VO2=0. Khi có một xung kích thích lối vào làm cho cổng 1 nhanh chóng cấm và lối ra bằng 0, xem giản đồ 6-11. Mạch điện RC sẽ nạp điện cho tụ điện C. Trong quá trình nạp, điện áp VI2 tăng dần đến ngưỡng VT và làm cổng 2 đóng, điện áp VO2=0. Khi đó, cổng 1 nhanh chóng chuyển về trạng thái cấm và làm cho mạch đa hài đợi trở về trạng thái ổn định. Độ rộng xung tại đầu ra của mạch được xác định bằng công thức sau: ED TRRCW0=+() ∗ln EVD − T trong đó R0 là điện trở đầu ra của cổng 1, nếu VT=ED/2 thì TRRCW0=+0,7() 2. Mạch đa hài đợi kiểu tích phân Hình 6-12. Đa hài đợi kiểu tích phân dùng cổng NOR CMOS 131
  9. Chương 6: Mạch phát xung và tạo dạng xung ED VI VO1 VI2 VT VO T W Hình 6-13. Dạng sóng của mạch đa hài đơi kiểu tích phân Hình 6-12 biểu diễn sơ đồ nguyên lý của mạch đa hài đợi kiểu tích phân. Tại trạng thái ổn định, VI=1 thì VO1=0, VI2=0, VO2=0. Khi lối vào VI chuyển từ 1 xuống 0 lối ra VO2 nhảy từ trạng thái 0 lên 1 và đồng thời mạch RC bắt đầu tích điện cho tụ điện C, khi điện áp VI2 = VT điện áp lối ra VO2 chuyển xuống trạng thái 0. Sau khi khi hết xung lối vào tụ điện phóng điện thông qua trở R và mạch trở về trạng thái ổn định. Độ rộng xung lối ra của mạch đa hài đợi được tính theo công thức: ED TRRCW0=+() ∗ln EVD − T trong đó R0 là điện trở đầu ra của cổng 1, nếu VT=ED/2 thì TRRCW0=+0,7() 3. Mạch đa hài đợi dùng trigơ Schmitt Dưạ vào đặc tính so sánh của trigơ Schmitt, mạch nguyên lý chỉ ra trên hình 6-14 là bộ đa hài đợi. Độ rộng xung lối ra phụ thuộc vào ngưỡng trên của trigơ Schmitt và giá trị của tụ điện C và điện trở R theo công thức sau: ED TRCW =∗ln + EVD − T nếu VT=ED/2 thì TRCW = 0,7 V I ED R V + VT V I C V V o V o T W 132
  10. Chương 6: Mạch phát xung và tạo dạng xung Hình 6-14. Sơ đồ nguyên lý và giản đồ thời gian của mạch đa hài dùng trigơ Schmitt 6.3.2. Mạch đa hài đợi TTL Hình 6-15 là sơ đồ nguyên lý mạch đa hài đợi họ TTL, trong đó các cổng 1, 2, 3 cấu trúc lên mạch flip-flop, cổng 4,5 là mạch tạo dạng xung. Các cổng này thuộc họ TTL nên có mức logic 1 là 3,6 V và logic 0 là 0,3 V. Đầu vào V2 biểu thị sử dụng mạch đảo. Mạch đảo này thông bão hoà thì V2 ~ 0,7 V, còn ngưỡng thông của nó cỡ 0,6 V. Tại trạng thái ổn định P = P’ = 0. Mạch đảo đầu vào V2 là bộ khuếch đại transistor emitter chung ở trạng thái bão hoà và khi đó V2 = 0,7 V, V3 = 0 , V1 = 1, Q = 0, Q = 1. Khi có xung dương tác động ở đầu vào thì P = 1, P’ = 1, V1 = 0, Q = 1, Q = 0, mạch ở trạng thái tạm ổn định. Do Q = 0 khoá cổng 4, nên sau khi bị kích thích bởi sườn dương xung P thì mạch bị cách ly khỏi xung P. E=5VC Q P' Q P V1 V2 V3 Hình 6-15. Sơ đồ nguyên lý mạch đa hài đợi họ TTL Vì điện áp trên tụ C không tăng đột biến nên khi V1 từ mức cao 3,6 V đột biến xuống 0,3 V thì V2 từ mức 0,7 V đột biến xuống -2,6 V. Bắt đầu quá trình nạp điện của tụ điện C. V2 tăng dần lên. Khi V2 Tăng lên đến ngưỡng thông 0,6 V thì sinh ra quá trình phản hồi dương sau: VVVQ231↑→ ↓→ ↑→ ↓ Quá trình này làm mạch nhanh chóng trở về trạng thái ổn định ban đầu V3 = 0 , V1 = 1, Q = 0, Q = 1. Tiếp đó tụ điện C phóng điện, V2 dần dần hồi phục về 0,7 V. Hình 6-16 chỉ ra giản đồ xung của mạch đa hài đợi họ TTL với giả thiết thời gian trễ truyền đạt của các cổng và bộ đảo pha đều bằng tpd. Độ rộng xung ra được tính theo công thức TRCW = 0,7 . Mạch dao động đa hài đợi được thiết kế sẵn trong một số họ IC TTL như 74LS121, 74LS123 bằng cách thay đổi các giá trị tụ và trở mắc ngoài sẽ cho các xung lối ra mong muốn. 133
  11. Chương 6: Mạch phát xung và tạo dạng xung V1 V2 V3 t (t ) pd Hình 6-16. Giản đồ xung của mạch dao động đa hài đợi TTL với giả thiết độ trễ của các cổng là tpd. 6.4. IC ĐỊNH THỜI Bộ định thời 555 được sử dụng rất rộng rãi trong các bộ dao động đa hài, đa hài đợi, và các bộ so sánh v.v Hình 6-17 là sơ đồ khối nguyên lý của IC định thời này, trong đó chức năng của các chân được chỉ ra trong bảng sau: Chân Chức năng Chân Chức năng 1 Đất - GND 5 Điện áp điều khiển 2 Chân kích thích 6 Chân ngưỡng 3 Đầu ra 7 Đầu phóng điện 4 Xoá - Reset 8 Nguồn - Vcc Bảng chức năng của IC 555 TH TRIG R OUT DIS X X L L Thông 2 1 > EC > EC H L Thông 3 3 2 1 E H Không đổi Không đổi 3 C 3 C 1 X > E H H Ngắt 3 C 134
  12. Chương 6: Mạch phát xung và tạo dạng xung 8 5 K 5 4 - 6 Bộ điều + khiển So sánh 1 Trigơ 5 K So sánh 2 + Tầng công suất lối ra 2 3 - 5 K 17 Hình 6-17. Sơ đồ khối nguyên lý của IC định thời 555 Một vài ứng dụng của IC định thời 555 1) Trigơ Schmitt Hình 6-18 là sơ đồ nguyên lý của trigơ schmitt dùng IC 555. Với sơ đồ này ngưỡng trên VE=∗2 và ngưỡng dưới VE=∗1 . Độ chênh lệch điện áp TC+ 3 1 TC− 3 1 Δ=VV − V =1 ∗ E. Nếu đưa điện áp vào đầu vào C-V thì có thể điều chỉnh được V , TT+−3 C1 T+ VT- và ΔV. E C1 EC2 R R1 4 VO2 VI R 2 R3 VO1 Hình 6-18. Mạch trigơ Schmitt dùng IC 555 135
  13. Chương 6: Mạch phát xung và tạo dạng xung 2) Mạch đa hài đợi Hình 6-19 là sơ đồ nguyên lý và giản đồ thời gian của mạch đa hài đợi dùng IC 555, trong đó RC là mạch định thời. Độ kéo dài xung lối ra được xác định bằng công thức TRCRCW ≈≈ln 3 1,1 . Mạch dao động đa hài đợi này yêu cầu độ rộng xung lối vào nhỏ hơn độ rộng xung lối ra, nếu nó lớn hơn thì yêu cầu dùng thêm mạch vi phân ở lối vào. EC VI 2EC / 3 VC EC VO T W Hình 6-19. Mạch đa hài đợi dùng IC 555 và dạng sóng 3) Mạch đa hài 2EC / 3 EC VC R1 2EC / 3 EC 0,01μ F VO R 2 0 VC TM1 VO TM2 T Hình 6-20. Mạch đa hài dùng IC 555 và dạng sóng Hình 6-20 là sơ đồ mạch đa hài và dạng sóng, điện trở R1, R2 và tụ điện C đóng vai trò là mạch định thời. Chu kỳ đao động của tín hiệu lối ra được xác định thông qua thời gian phóng và nạp của tụ điện C như sau: TRRC=+() ∗ln 2 = 0,7 () RRC + M 112 12 TRC=∗=ln 2 0,7 RC M 22 2 TT=+= T0,7() R + 2 RC MM12 12 1, 43 fT==1/ R + 2RC ()12 Như ta thấy xung lối ra có độ lấp đầy phụ thuộc vào cả điện trở R1 và R2 và không thể tạo ra xung vuông với độ lấp đầy bằng 50% thông qua việc thay đổi giá trị R1 và R2. Để có được xung vuông với độ lấp đầy bằng 50%, người ta sử dụng mạch có thêm 2 diode khi đó trở phóng và 136
  14. Chương 6: Mạch phát xung và tạo dạng xung nạp điện cho Tụ có thể thay đổi độc lập và tạo ra xung mong muốn. Hình 6-21 là sơ đồ nguyên lý của mạch đa hài dùng IC 555 mà độ lấp đầy có thể thay đổi được. EC 8 4 5 R1 7 0,01μ F 555 6 R 2 3 2 VC V O C 1 Hình 6-21. Mạch đa hài điều chỉnh được độ lấp đầy xung dùng IC 555 TÓM TẮT Trong chương này chúng ta đã tìm hiểu các mạch tạo xung. Mạch dao động xung tự kích không cần tín hiệu ngoài đưa vào; sau khi được cấp nguồn một chiều mạch tự động sinh ra xung vuôn. Thuộc loại dao động tự kích này có các mạch: bộ dao động đa hài cơ bản cổng NAND họ TTL, bộ dao động vòng, bộ dao động thạch anh, bộ dao động đa hài cơ bản CMOS. Mạch tạo dạng xung không tự động phát xung nhưng có thể biến tín hiệu đàu vào hình dạng khác thành xung vuông theo yêu cầu của mạch số. Trong số mạch tạo dạng xung, chúng ta đã tìm hiểu: trigơ Schmit và đơn ổn. Cách mạch phát xung và tạo dạng xung trên đây, ngoài dùng làm xung đồng hồ ra còn có ứng dụng vo cùng rộng rãi trong các hẹ thống xung - số. Bộ dao động đa hài thường dùng làm bộ tạo xung chuẩn thời gian và chuẩn tần số. Mạch đơn ổn thường dùng để định thời và làm trễ xung. Trigơ Schmit ngoài ứng dụng tạo dạng xung còn ứng dụng so sánh mức và giám sát mức CÂU HỎI ÔN TẬP 1. Trong mạch dao động đa hài cơ bản dùng cổng NAND họ TTL, hình 6-1, nếu giá trị trị điện trở Rf1 = 5*Rf2 = 10 kΩ, giá trị C1 = C2 = 1 μF thì mạch có hoạt động không? đạng tín hiệu tương đối lối ra sẽ như thế nào? Hình 6-1. Bộ dao động đa hài cấu trúc bằng cổng NAND 137
  15. Chương 6: Mạch phát xung và tạo dạng xung a. Lối ra luôn ở mức logic thấp b. Lối ra luôn ở mức logic cao c. Tín hiệu lối ra là xung vuông với độ lấp đầy nhỏ hơn 50% d. Tín hiệu lối ra là xung vuông có độ lấp đầy lớn hơn 50% 2. Với câu hỏi như câu 1 và giả thiết R1= 3 kΩ, tính tần số dao động của mạch và vẽ dạng sóng lối ra. a. f = 28 Hz và dạng sóng lối ra có dạng : b. f=28 Hz và dạng sóng lối ra có dạng : c. f=28 Hz và dạng sóng lối ra có dạng : d. f=0 Hz và dạng sóng lối ra có dạng : 3. Đặc điểm nổi bật nhất của mạch dao động đa hài dùng thạch anh là gì? a. Biên độ tín hiệu lối ra ổn định b. Tần số tín hiệu lối ra ổn định c. Biên độ lối ra có thể điều chỉnh được d. Tần số lối ra có thể điều chỉnh được 4. Trong mạch dao động đa hài dùng thạch anh như hình 6-6, nếu không có tụ C1, lối ra của thạch anh được nối trực tiếp với dầu vào của cổng NAND thứ hai thì mạch: Hình 6-6. Mạch dao động đa hài thạch anh a. Không dao động lối ra luôn thấp b. Không dao động lối ra luôn cao c. Có xung lối ra nhưng tần số thay đổi d. Tần số xung lối ra không thay đổi 5. Đặc điểm quan trọng nhất của trigơ Schmitt là gì? 138
  16. Chương 6: Mạch phát xung và tạo dạng xung a. Tần số hoạt động cao b. Tính chống nhiễu cao vì nó hoạt động như bộ so sánh hai ngưỡng c. Công suất tiêu thụ thấp d. Là bộ so sánh một ngưỡng 6. Mạch có sơ đồ nguyên lý như hình sau có chức năng như thế nào? a. Bộ so sánh một ngưỡng V+ - b. Trigơ Schmitt Vi Opam c. Mạch dao động đa hài Vo + d. Mạch dao động đa hài đợi V- R R 7. Với mạch điện như câu hỏi 6, nếu tín hiệu lối vào có dạng tín hiệu như hình sau, tín hiệu lối ra nằm ở hình nào. +V +V/2 -V/2 -V Hình a. +V +V +V/2 +V/2 -V/2 -V/2 -V -V Hình b +V +V +V/2 +V/2 -V/2 -V/2 -V -V Hình c Hình d 139
  17. Chương 6: Mạch phát xung và tạo dạng xung a. Hình a. b. Hình b. c. Hình c. d. Hình d. 8. Chức năng của mạch đa hài đợi là gì? a. Là mạch phát xung vuông b. Là mạch dao động đa hài có chân điều khiển c. Là mạch dao động đa hài có một trạng thái ổn định và một trạng thái tạm ổn định d. Là mạch phát xung điều hoà 9. Trong mạch đa hài đợi kiểu vi phân như hình 6-10, nếu xung điều khiển có độ rộng lớn hơn xung đa hài đợi lối ra thì : a. Mạch vẫn hoạt động bình thường b. Tín hiệu lối ra luôn bằng 0 c. Tín hiệu lối ra luôn bằng 1 d. Xung lối ra bằng xung lối vào 10. Trong mạch đa hài hình 6-20, nếu điện trở R2 bị nối tắt thì: a. Mạch vẫn phát xung và tần số lối ra chỉ phụ thuộc vào giá trị của R1 và C b. Xung lối ra là xung vuông có độ lấp đầy là 50% c. Mạch vẫn phát xung nhưng tần số rất cao d. Không có tín hiệu lối ra 140
  18. Chương 7: Bộ nhớ bán dẫn CHƯƠNG 7: BỘ NHỚ BÁN DẪN GIỚI THIỆU Bộ nhớ bán dẫn thay thế các loại bộ nhớ bằng vật liệu từ. Các tiến bộ mới của công nghệ bán dẫn trong thời gian gần đây đã cung cấp nhiều mạch nhớ loại MSI và LSI có độ tín cậy cao và giá thành hạ. Vào đầu thập kỷ 60 của thế kỷ 20, giá thành thương phẩm của một bit nhớ vào khoảng 2 USD. Đến nay (những năm đầu thế kỷ 21), giá thương phẩm của 128 Mbyte vào khoảng 20 USD. Như vậy giá thành thương phẩm của một bit nhớ sau khoảng 40 năm đã giảm đi khoảng 105.106 lần. Bộ nhớ bán dẫn điển hình có các tế bào nhớ sắp xếp theo hình chữ nhật, gắn trong khối hộp nhỏ bằng nhựa dạng DIP (Dual in line package). Tế bào nhớ cơ bản là một mạch trigơ, transistor hay mạch có khả năng tích trữ điện tích, tế bào nhớ này dùng để lưu trữ một bit tin. Trong phần này giới thiệu một số bộ nhớ bán dẫn cơ bản. NỘI DUNG 7.1. KHÁI NIỆM CHUNG 7.1.1. Khái niệm Bộ nhớ là một thiết bị có khả năng lưu trữ thông tin (nhị phân). Muốn sử dụng bộ nhớ, trước tiên ta phải ghi dữ liệu và các thông tin cần thiết vào nó, sau đó lúc cần thiết phải lấy dữ liệu đã ghi trước đó để sử dụng. Thủ tục ghi vào và đọc ra phải được kiểm soát chặt chẽ, tránh nhầm lẫn nhờ định vị chính xác từng vị trí ô nhớ và nội dung của nó theo một mã địa chỉ duy nhất. 7.1.2. Những đặc trưng chính của bộ nhớ 7.1.2.1. Dung lượng của bộ nhớ. Dung lượng bộ nhớ là số bit thông tin tối đa có thể lưu giữ trong nó. Dung lượng cũng có thể biểu thị bằng số từ nhớ n bit. Từ nhớ n bit là số bit (n) thông tin mà ta có thể đọc hoặc ghi đồng thời vào bộ nhớ. Ví dụ: Một bộ nhớ có dung lượng là 256 bit; nếu nó có cấu trúc để có thể truy cập cùng một lúcc 8 bit thông tin, thì ta cũng có thể biểu thị dung lượng bộ nhớ là 32 từ nhớ x 8 bit = 32 byte. 7.1.2.2. Cách truy cập thông tin. Các bộ nhớ có thẻ có một trong hai cách truy cập thông tin. Truy cập trực tiếp, hay còn gọi là truy cập ngẫu nhiên (random access). Ở cách này, không gian bộ nhớ được chia thành nhiều ô nhớ. Mỗi ô nhớ chứa được 1 từ nhớ n bit và có một địa chỉ xác định, mã hoá bằng số nhị phân k bit. Như vậy, người sử dụng có thể truy cập trực tiếp thông tin ở ô nhớ có địa chỉ nào đó trong bộ nhớ. Mỗi bộ nhớ có k bit địa chỉ sẽ có 2k ô nhớ và có thể ghi được 2k từ nhớ n bit. 141
  19. Chương 7: Bộ nhớ bán dẫn Truy cập liên tiếp (serial access) hay còn gọi là kiểu truy cập tuần tự. Các đĩa từ, băng từ, trống từ, thanh ghi dịch có kiểu truy cập này. Các bit thông tin được đưa vào và lấy ra một cách tuần tự. 7.1.2.3. Tốc độ truy cập thông tin. Đây là thông số rất quan trọng của bộ nhớ. Nó được đặc trưng bởi thời gian cần thiết để truy cập thông tin. Thời gian truy cập thông tin ở các bộ nhớ truy cập kiểu trực tiếp gồm thời gian tìm địa chỉ của ô nhớ và thời gian đọc/viết thông tin trên đó. Thời gian truy cập thông tin phụ thuộc chủ yếu vào công nghệ chế tạo. Với công nghệ MOS thì thời gian truy cập khoảng 30 đến vài trăm ns. Ở các bộ nhớ truy cập kiểu tuần tự, thời gian truy cập phụ thuộc vào vị trí của thông tin cần truy cập trong tập tin (file). Đối với các băng từ, đĩa từ thời gian truy cập của nó được định nghĩa là thời gian trung bình hoặc cực đại để truy cập một thông tin và nằm trong khoảng vài msec đến nhiều sec. 7.1.3. Phân loại BỘ NHỚ BÁN DẪN Bộ nhớ cố định Bộ nhớ bán cố Bộ nhớ đọc/viết ROM định MROM PROM EPROM EEPROM SRAM DRAM Dựa trên thời gian viết và cách viết, có thể chia thành bộ nhớ cố định, bộ nhớ bán cố định và bộ nhớ đọc/viết được. Bộ nhớ có nội dung được viết sẵn một lần khi chế tạo được gọi là bộ nhớ cố định và được ký hiệu là ROM (Read Only Memory). Sau khi đã được viết (bằng mặt nạ-mask) từ nhà máy thì ROM loại này không viết lại được nữa đó chính là MROM. PROM là một dạng khác, các bit có thể được viết bằng thiết bị ghi của người sử dụng trong một lần (Programmable ROM). Bộ nhớ có thể đọc/ viết nhiều lần được gọi là RAM (Random Access Memory) gồm hai loại: bộ nhớ RAM tĩnh-SRAM (Static RAM) thường được xây dựng trên các mạch điện tử trigơ và RAM động-DRAM (Dynamic RAM) được xây dựng trên cơ sở nhớ các điện tích ở tụ điện; bộ nhớ này phải được hồi phục nội dung đều đặn, nếu không nội dung sẽ mất đi theo sự rò điện tích trên tụ. Giữa ROM và RAM có một lớp các bộ nhớ được gọi là EPROM (Erasable PROM), dữ liệu trong đó có thể xoá được bằng tia cực tím và ghi lại được, EEPROM (Electric EPROM) có thể xoá được bằng dòng điện. Các loại này còn được gọi là bộ nhớ bán cố định. Các bộ nhớ DRAM thường thoả mãn những yêu cầu khi cần bộ nhớ có dung lượng lớn; trong khi đó khi cần có tốc độ truy xuất lớn thì phải dùng các bộ nhớ SRAM có giá thành đắt hơn. Nhưng cả hai loại này đều có nhược điểm là thuộc loại “bay hơi” (volatile), thông tin sẽ bị mất đi khi nguồn nuôi bị 142
  20. Chương 7: Bộ nhớ bán dẫn ngắt. Do vậy các chương trình dùng cho việc khởi động PC như BIOS thường phải nạp trên các bộ nhớ ROM. 7.1.4. Tổ chức của bộ nhớ Bộ nhớ thường được tổ chức gồm nhiều vi mạch nhớ được ghép lại để có độ dài từ và tổng số từ cần thiết. Những chip nhớ được thiết kế sao cho có đầy đủ một số chức năng của bộ nhớ như: • Một ma trận nhớ gồm các ô nhớ, mỗi ô nhớ ứng với một bit nhớ. • Mạch logic giải mã địa chỉ ô nhớ. • Mạch logic cho phép đọc nội dung ô nhớ. • Mạch logic cho phép viết nội dung ô nhớ. • Các bộ đệm vào, bộ đệm ra và bộ mở rộng địa chỉ. Cách tổ chức đơn giản nhất là tổ chức theo từ (word organized) với sự chọn tuyến tính. Một ma trận nhớ như vậy có độ dài của cột bằng số lượng từ W và độ dài của hàng bằng số lượng bit B trong một từ. Bộ chọn từ phải giải mã 1 từ W, nghĩa là giải mã để có một đầu ra duy nhất cho một từ trong bộ nhớ. Phương pháp này có thời gian truy nhập ngắn nhưng cần một bộ giải mã lớn khi tổng số từ lớn, do đó làm tăng giá thành sản phẩm. Kích thước của phần giải mã địa chỉ sẽ giảm đi khi tổ chức ma trận nhớ và phần logic chọn từ cho phép giải mã hai bước. Ma trận nhớ sử dụng giải mã hai bước ứng với từ vật lý và từ logic. Từ vật lý bao gồm số lượng bit trong một hàng của ma trận. Từ logic bao gồm số lượng bit tương ứng với một từ logic được nhận biết và gửi ra cùng một lúc. Cần hai bộ giải mã: một bộ giải mã hàng để chọn một từ vật lý và một bộ giải mã cột gồm có một vài mạch hợp kênh chọn một từ logic từ một từ vật lý đã chọn. Một từ vật lý được chia thành S từ logic. Bộ giải mã hàng là bộ giải mã chọn 1 từ W mà B = W/S và bộ chọn cột chứa B bộ hợp kênh một đường từ S. Ví dụ sơ đồ ROM dung lượng 2048 x 8 (2048 từ, mỗi từ chứa 8 bit) tổ chức giải mã hai bước như hình 7- 1. Ma trận nhớ là 128 x 128, như vậy có 128 = 27 từ vật lý. Một từ vật lý được chọn bởi 7 đường địa chỉ từ A0 đến A6. Bộ giải mã hàng chọn 1 hàng từ 128 hàng. Một từ vật lý được chia thành 128/8 = 16 nhóm 8 bit. Nhóm thứ nhất chứa những bit có trọng số cao nhất của 16 từ logic. Nhóm thứ hai chứa các bit cao tiếp theo của 16 từ logic Nhóm cuối cùng chứa nhứng bit thấp nhất của 16 từ logic, do đó S = 16. Như vậy, những bộ giải mã cột gồm 8 bộ hợp kênh một đường từ 16 đường để cung cấp một từ locgic ra 8 bit. Những địa chỉ từ A7 đến A10 điều khiển các bộ giải mã cột. Trường hợp đặc biệt khi số phần tử trong một từ vật lý bằng sos bit trong một từ vật lý thì đó là bộ nhớ tổ chức theo bit có nghĩa là mỗi từ logic có độ dài 1 bit. 143
  21. Chương 7: Bộ nhớ bán dẫn Giải mã hàng 128 7 Đệm 7 1 từ 128 Ma trận ROM A0-A6 vào 128 x 128 bit 128 4 8 bộ giải mã cột 1 từ 16 A7-A10 8 CS Đệm ra 8 07,,,00 Hình 7-1. Một ví dụ về giải mã hai bước cho ma trận ROM 128 x 128 Các bộ đệm ra đảm bảo các mức logic mong muốn và cung cấp đủ dòng điện, ngoài ra nó còn có đầu ra collector hở hoặc 3 trạng thái cho phép nối chung đầu ra của một vài chip với nhau. Bộ đệm ra được điều khiển bởi một hay nhiều đầu vào như chọn mạch CS (Chip Select), cho phép mở CE (Chip Enable) hay cho phép mở đầu ba trạng thái OE (Output Enable). 7.2. DRAM 7.2.1. Cấu tạo của DRAM Các ô nhớ được xắp xếp theo hàng và cột trong một ma trận nhớ. Địa chỉ ô nhớ được chia thành hai phần: địa chỉ hàng và cột. Hai địa chỉ này được đọc vào bộ đệm một cách lần lượt. Xử lý kiểu này được gọi là hợp kênh, lý do là để giảm kích thước bộ giải mã, tức là giảm kích thước và giá thành vi mạch. Quá trình dồn kênh địa chỉ này được điều khiển bởi các tín hiệu RAS (Row Access Strobe) và CAS (Column Access Strobe). Nếu RAS ở mức tích cực thấp thì DRAM nhận được địa chỉ đặt vào nó và sử dụng như địa chỉ hàng. Nếu CASở mức tích cực thấp thì DRAM nhận được địa chỉ đặt vào nó và sử dụng như địa chỉ cột. Một ô nhớ của DRAM gồm có một transistor trường MOS có trở lối vào rất lớn và một tụ điện C là linh kiện lưu trữ một bit thông tin tương ứng với hai trạng thái có hoặc không có điện tích trên tụ. Tụ điện Transistor Điện cực Cửa Lớp Lớp Tra ôxit ôxit n- Nguồn n- Máng Vùng lưu giữ C điện tích Đế bán dẫn loại p WL BL BL Hình 7-2. Cấu tạo một ô nhớ của DRAM 144
  22. Chương 7: Bộ nhớ bán dẫn Transistor hoạt động như một công tắc, cho phép nạp hay phóng điện tích của tụ khi thực hiện phép đọc hay viết. Cực cửa (Gate) của transistor được nối với dây hàng (còn gọi là dây từ- WL-Word Line) và cực máng (Drain) được nối với dây cột (còn được gọi là dây bit BL hoặc BL - Bit Line), cực nguồn (Source) được nối với tụ điện. Điện áp nạp trên tụ tương đối nhỏ, vì thế cần sử dụng khuếch đại nhạy trong mạch nhớ. Do dòng rò của transistor nên ô nhớ cần được nạp lại trước khi điện áp trên tụ thấp hơn một ngưỡng nào đó. Quá trình này được thực hiện nhờ một chu kỳ “làm tươi” (refresh), khi đó điện áp trên tụ được xác định (ở trạng thái 0 hay 1) và mức điện áp logic này được viết lại vào ô nhớ. Một số loại chip DRAM thường gặp là: TMS 4116: có dung lượng 16k x 1 bit; 41256 có dung lượng 256k x 1 bit. Thời gian truy cập thông tin khoảng 150 nsec, công suất tiêu thụ khoảng 280 mW khi làm việc (khi chờ = 28 mW) Hình 7-3 là vỏ của IC 41256 dung lượng 256k x 1 bit. Mạch cần 18 bit địa chỉ để mã hoá cho các địa chỉ hàng và cột; nhưng trên vỏ chỉ có Hình 7-3. IC 41256 9 đương địa chỉ từ A0 đến A8. Hai chân RAS, CAS hoạt động ở mức cao, dùng để điều khiển 9 bit địa chỉ trên chip tới bộ giải mã địa chỉ hàng hay cột. 7.3. SRAM Một ô nhớ của SRAM giữ thông tin bởi trạng thái của mạch trigơ. Thuật ngữ “tĩnh” chỉ ra rằng khi nguồn nuôi chưa bị cắt thì thông tin của ô nhớ vẫn được giữ nguyên. Khác với ô nhớ DRAM, ở đây ô nhớ trigơ cung cấp một tín hiệu số mạch hơn nhiều vì đã có các transistor trong các ô nhớ, chúng có khả năng khuếch đại tín hiệu và do đó có thể cấp trực tiếp cho các đường bit. Trong DRAM, sự khuếch đại tín hiệu trong các bộ khuếch đại cần nhiều thời gian và do đó thời gian truy nhập dài hơn. Khi định địa chỉ trong các trigơ ở SRAM, các transistor bổ sung cho các trigơ, các bộ giải mã địa chỉ cũng được đòi hỏi như ở DRAM. VCC Tra Tra Tra C Trs Trs WL WL BL BL BL BL Hình 7-4. Cấu tạo một ô nhớ của SRAM và DRAM Như trong DRAM, cực cửa của transistor được nối với đường từ và cực máng nối với cặp đường bit. Nếu số liệu được đọc từ ô nhớ, khi đó bộ giải mã hàng kích hoạt đường dây từ WL tương ứng. Hai transistor T dẫn và nối trigơ nhớ với cặp dây bit. Như vậy hai lối ra Q và Q được 145
  23. Chương 7: Bộ nhớ bán dẫn nối với các đường bit và các tín hiệu được truyền tới bộ khuếch đại ở cuối đường dây này. Vì điện thế chênh lệch lớn nên xử lý khuếch đại như vậy sẽ nhanh hơn trong DRAM (cỡ 10 ns hoặc ngắn hơn), do đó chip SRAM cần địa chỉ cột sớm hơn nếu thời gian truy nhập không được giảm. Như vậy SRAM không cần thực hiện phân kênh các địa chỉ hàng và cột. Sau khi số liệu ổn định, bộ giải mã cột chọn cột phù hợp và cho ra tín hiệu số liệu tới bộ đệm số liệu ra và tới mạch ra. Viết số liệu được thực hiện theo cách ngược lại. Qua bộ đệm vào và bộ giải mã cột, số liệu viết được đặt vào bộ khuếch đại phù hợp. Cùng lúc đó bộ giải mã hàng kích hoạt đường dây từ và làm transistor T dẫn. Trigơ đưa số liệu được lưu trữ vào cặp dây bit. Tuy vậy, bộ khuếch đại nhạy hơn các transistor nên nó sẽ cấp cho các đường bit một tín hiệu phù hợp với số liệu viết. Do đó, trigơ sẽ chuyển trạng thái phù hợp với số liệu mới hoặc giữ giá trị đã được lưu trữ phụ thuộc vào việc số liệu viết trùng với số liệu đã lưu trữ hay không. Một số IC DRAM thường gặp là 2148, 2114-2 của hãng Intel. Dung lượng 1k x 4 bit. Thời gian truy cập thông tin khoảng 200 ns, công suất tiệu thụ 525 mW. IC TMS 4016 dung lượng 2k x 8 bit. IC HM 6116, họ CMOS, dung lượng 2kbyte, thời gian truy cập là 120 nsec, công suất tiêu thụ khi làm việc là P = 180 mW (khi chờ ≈ μW). Hình 7-5 giới thiệu IC 6264, dung lượng 8 kbyte, và bảng điều kiện Hình 7-5. Sơ đồ châncủa SRAM 6264 thao tác của nó. Phương thức hoạt động CS CS WE OE Không được chọn H X X X Đọc L H H L Đọc nhưng không xuất dữ liệu L H H H Ghi L H L L 7.3. BỘ NHỚ CỐ ĐỊNH - ROM Các chip RAM không thích hợp cho các chương trình khởi động do các thông tin trên đó bị mất khi tắt nguồn. Do vậy phải dùng đến ROM, trong đó các số liệu cần lưu trữ được viết một lần theo cách không bay hơi để nhằm giữ được mãi. 7.3.1. MROM 146
  24. Chương 7: Bộ nhớ bán dẫn ROM lập trình theo kiểu mặt nạ được gọi là MROM. Nó được chế tạo trên một phiến silic theo một số bước xử lý như quang khắc và khếch tán để tạo ra những tiếp giáp bán dẫn có tính dẫn điện theo một chiều (như diode, transistor trường). Người thiết Các kế định rõ chương trình muốn ghi vào ROM, thông dây hàng (i tin này được sử dụng để điều khiển quá trình làm mặt nạ. Hình 7-6 là một ví dụ đơn giản về sơ đồ MROM dùng diode. Các dây bit Chỗ giao nhau giữa các dây từ (hàng) và các Hình 7-6.MROMdiode dây bit (cột) tạo nên một phần tử nhớ (ô nhớ). Một diode được đặt tại đó (hình vẽ) sẽ cho phép lưu trữ số liệu “0”. Ngược lại những vị trí không có diode thì sẽ cho phép lưu trữ số liệu “1”. Khi đọc một từ số liệu thứ i của ROM, bộ giải mã sẽ đặt dây từ đó xuống mức logic thấp, các dây còn lại ở mức cao. Do vậy chỉ những diode nối với dây này được phân cực thuận, do đó nó sẽ dẫn làm cho điện thế lối ra trên các dây bit tương ứng ở mức logic thấp, các dây bit còn lại sẽ giữ ở mức cao. Cả hai công nghệ MOS và lưỡng cực được dùng để chế tạo MROM. Thời gian truy nhập của bộ nhớ lưỡng cực khoảng từ 50 – 90 ns, bộ nhớ MOS lâu hơn khoảng 10 lần. Do đó ROM lưỡng cực nhanh hơn và có khả năng kích hoạt tốt hơn trong khi mạch nhớ MOS cùng dung lượng có kích thước nhỏ hơn và tiêu thụ năng lượng ít hơn. 7.3.2. PROM PROM cũng gồm có các diode như ở MROM nhưng chúng có mặt đầy đủ tạo các vị trí giao nhau giữa dây từ và dây bit. Mỗi diode được nối với một cầu chì. Bình thường khi chưa lập trình, các cầu chì còn nguyên vẹn, nội dung của PROM sẽ toàn là 0. Khi định vị đến một bit bằng cách đặt một xung điện ở lối ra tương ứng, cầu chì sẽ bị đứt và bit này sẽ bằng 1. Bằng cách đó ta có thể lập trình toàn bộ các bit trong PROM. Như vậy, việc lập trình đó có thể được thực hiện bởi người sử dụng chỉ một lần duy nhất, không thể sửa đổi được. 7.4. BỘ NHỚ BÁN CỐ ĐỊNH 7.4.1. EPROM (Erasable PROM) Số liệu vào có thể được viết vào bằng xung điện nhưng được lưu giữ theo kiểu không bay hơi. Đó là loại ROM có thể lập trình được và xóa được. Hình 7- 7 chỉ ra cấu trúc của một transistor dùng để làm một ô nhớ gọi là FAMOST (Floating gate avalanche injection MOS transistor). Trong ô nhớ dùng transistor này, cực cửa được nối với đường từ, cực máng được nối với đường bit và cực nguồn được nối với nguồn chuẩn được coi là nguồn cho mức logic 1. Khác với transistor MOS bình thường, transistor loại này còn có thêm một cửa gọi là cửa nổi (floating gate); đó là một vùng vật liệu được thêm vào vào giữa lớp cách điện cao như ở hình 7-7. Nếu cửa nổi không có điện tích thì nó không ảnh hưởng gì đến cực cửa điều khiển và transistor hoạt động như bình thường. Tức là khi dây từ được kích hoạt (cực cửa có điện thế dương) thì transtor dẫn, cực máng và nguồn được nối với nhau qua kênh dẫn và dây bit có mức logic 1. Nếu cửa nổi có các điện tử trong đó với điện tích âm thì chúng sẽ ngăn trường điều khiển của cửa cửa và dù dây 147
  25. Chương 7: Bộ nhớ bán dẫn từ được kích hoạt thì cũng không thể phát ra trường đủu mạnh với cực cửa điều khiển để làm thông transistor. Lúc này đường bit không được nối với nguồn chuẩn và ô nhớ coi như được giữ giá trị 0. NguồnMángCửa hv hv ID “0” “1” Cửa điều khiển Xoá Cửa nổi Lớp ôxit Lớp ôxit Lập trình n- Nguồn - - - n- Máng - - - Đế bán dẫn loại p v0 v1 vGS Hình 7-7. Cấu trúc của một EPROM Việc nạp các điện tử vào vùng cửa nổi, tức là tạo ra các ô nhớ mang giá trị 0 được thực hiện bởi xung điện có độ dài cỡ 50 ms và độ lớn + 20 V đặt giữa cực cửa va cực máng. Lúc đó những điện tích mang năng lượng lớn sẽ đi qua lớp cách điện giữa đế và cửa nổi. Chúng tích tụ trong vùng cửa nổi và được giữ ở đây sau khi xung lập trình tắt. Đó là do cửa nổi được cách điện cao với xung quanh và các điện tử không còn đủ năng lượng sau khi lạnh đi, để có thể vượt ra ngoài lớp cách điện đó nữa. Chúng sẽ được giữ ở đây trong một thời gian rất dài (ít nhất là 10 năm). Để xoá các thông tin, tức là làm mất các điện tích điện tử trong vùng cửa nổi, phải chiếu ánh sáng tử ngoại UV vào chíp nhớ. Lúc này, những điện tử hấp thụ đượ năng lượng và sẽ nhảy lên các mức năng lượng cao và rời khỏi cửa nổi giống như cách mà chúng đã thâm nhập vào. Trong chip EPROM có một cửa sổ làm bằng thuỷ tinh thạch anh chỉ để cho ánh sáng tử ngoại đi qua khi cần xoá số liệu trong bộ nhớ. 7.4.2. EEPROM (Electrically Erasable PROM) Cửa sổ thạch anh có giá thành khá đắt và không tiện lợi nên những năm gần đây xuất hiện các chip PROM có thể xoá số liệu bằng phương pháp điện. Cấu trúc của ô nhớ giống như hình 7- 8. Việc nạp các điện tử cho cửa nổi được thực hiện như cách ở EPROM. Bằng một xung điện tương đối dài, các điện tích mang năng lượng cao được phát ra trong đế sẽ thấm qua lớp cửa ôxit và tích tụ trong cửa nổi. Để xoá EEPROM, một lớp kênh màng mỏng ôxit giữa vùng cửa nổi trải xuống dưới đế và cực máng giữ vai trò quan trọng. Các lớp cách điện không thể là lý tưởng được, các điện tích có thể thấm qua lớp phân cách với một xác suất thấp. Xác suất này tăng lên khi bề dày của lớp giảm đi và điện thế giữa hai điện cực ở hai mặt lớp cách điện tăng lên. Muốn phóng các điện tích trong vùng cửa nổi một điện thế (-20 V) được đặt vào cực cửa điều khiển và cực máng. Lúc này các điện tử âm trong cửa nổi được chảy về cực máng qua kênh màng mỏng ôxit và số liệu lưu giữ được xoá đi. Điều lưu ý là phải làm sao cho dòng điện tích này chảy không quá lâu vì nếu không vùng cửa nổi này lại trở nên tích điện dương làm cho hoạt động của transistor không được trạng thái bình thường (mức nhớ 1). 148
  26. Chương 7: Bộ nhớ bán dẫn Hình 7-8. Cấu trúc của EEPROM Các chip ROM hiện nay có thời gian truy nhập từ 120 ns đến 150 ns dài hơn nhiều thời gian đó trong các chip nhớ RAM. 7.4.3. Đĩa cứng silicon- Bộ nhớ FLASH Trong những năm gần đây, một loại bộ nhớ không bay hơi mới đã xuất hiện trên thị trường, thường được sử dụng thay thế cho các ổ đĩa mềm và cứng trong những máy tính. Đó là bộ nhớ flash. Cấu trúc của chúng cơ bản như EEPROM, chỉ có lớp kênh ôxit ở các ô nhớ mỏng hơn. Do vậy chỉ cần điện thế cỡ 12 V là có thể cho phép thực hiện 10 000 chu trình xoá và lập trình. Bộ nhớ flash có thể hoạt động gần mềm dẻo như DRAM và SRAM nhưng lại không bị mất số liệu khi bị cắt điện. Hình 7- 9 chỉ ra sơ đồ khối của nó. Phần chính là mạng nhớ bao gồm các ô nhớ FAMOST như được mô tả ở mục trên. Giống như SRAM, bộ nhớ flash không dồn phân kênh địa chỉ. Các bộ giải mã hàng và cột chọn một đường từ và một hoặc nhiều cặp đường bit. Số liệu đọc được đưa ra ngoài bộ đệm số liệu I/O hoặc được viết vào ô nhớ đã được định địa chỉ bởi bộ đệm này qua cổng I/O. Xử lý đọc được thực hiện với điện thế MOS thông thường là 5V. Để lập trình một ô nhớ, đơn vị điều khiển flash đặt một xung điện thế ngắn cỡ 10 μs và 12 V gây nên một sự chọc thủng thác lũ vào transistor nhớ để nạp vào cửa nổi. Một chip nhớ flash 1 Mb có thể được lập trình trong khoảng 2 sec, nhưng khác với EEPROM việc xoá được thực hiện từng chip một. Thời gian xoá cho toàn bộ bộ nhớ flash khoảng 1 sec. Xử lý đọc, lập trình và xoá được điều khiển bởi các lệnh có độ dài 2 byte được bộ xử lý viết vào các thanh ghi lệnh của mạch điều khiển flash. 149
  27. Chương 7: Bộ nhớ bán dẫn VPP Chuyển mạch điện thế Điều khiển xoá WE Thanh ghi lệnh CE Chuyển mạch điện thế OE Bộ định thời chương trình Giải mã hàng Đệm Địa địa chỉ chỉ Ma trận tế bào nhớ Giải mã cột Cửa vào ra Đệm vào ra dữ liệu Dữ liệu vào Hình 7-9. Sơ đồ bộ nhớ FLASH Mục đích sử dụng chính của bộ nhớ flash là để thay thế cho các ổ đĩa mềm và ổ đĩa cứng dung lượng nhỏ. Do nó là mạch tích hợp nên có ưu điểm là kích thước nhỏ và tiêu thụ năng lượng thấp, không bị ảnh hưởng của va đập. Các đĩa cứng chất rắn dựa trên cơ sở các bộ nhớ flash có lợi thế về công suất tiêu thụ cũng như giá thành có dung lượng tới vài Mbyte. Các card nhớ loại này có ưu điểm là không gặp phải vấn đề mất thông tin như trường hợp RAM CMOS khi pin Ni-Cd bị hỏng. Thời gian lưu trữ thông tin trong bộ nhớ flash ít nhất là 10 năm, thông thường là 100 năm, với khoảng thời gian này thì các đĩa mềm và cứng đã bị hỏng rồi. Nhược điểm của bộ nhớ flash là chỉ có thể xoá theo kiểu lần lượt từng chip hoặc lần lượt từng trang. 7.4.3. Bộ nhớ CACHE Với các máy tính có tốc độ nhanh (trên 33MHz), cần phải xen các trạng thái đợi khi truy xuất dữ liệu tới các DRAM rẻ tiền nhưng có thời gian thâm nhập chậm (60-120ns). Điều này làm giảm hiệu suất của máy. Có thể giải quyết bằng cách dùng các SRAM có thời gian thâm nhập ngắn hơn (20-25 ns, thậm chí 12 ns) nhưng giá thành lại rất đắt. Bộ nhớ Cache kết hợp được các lợi điểm nhanh của SRAM và rẻ của DRAM. Giữa CPU và bộ nhớ chính bằng DRAM, người ta xen vào một bộ nhớ SRAM nhanh có dung lượng nhỏ bằng 1/10 hoặc 1/100 lần bộ nhớ chính gọi là cache; dưới sự điều khiển của mạch điều khiển cache, bộ nhớ này sẽ lưu trữ tạm thời các số liệu thường được gọi và cung cấp nó cho CPU trong thời gian ngắn. Cache chứa các thông tin mới vừa được CPU sử dụng gần đây nhất. Khi CPU đọc số liệu nó sẽ đưa ra một địa chỉ tới bộ điều khiển cache. Sau đó một trong hai quá trình sau sẽ xảy ra: 150
  28. Chương 7: Bộ nhớ bán dẫn - Cache hit: nếu địa chỉ đó đã có sẵn trong RAM cache. - Cache miss: ngược lại, nếu địa chỉ đó không có sẵn trong RAM cache. Như vậy, cache hit tỷ lệ với truy xuất thông tin có sẵn trong bộ nhớ cache SRAM, còn cache miss lại tỷ lệ với truy xuất thông tin có trong bộ nhớ chính là các DRAM. SRAM Cache CPU DRAM trong bộ nhớ chính Bộ điều khiển CACHE Hình 7-10. Nguyên lý của Cache 7.5. MỞ RỘNG DUNG LƯỢNG BỘ NHỚ Các vi mạch nhớ bán dẫn chỉ có dung lượng xác định. Muốn có bộ nhớ có dung lượng lớn hơn, ta tìm cách ghép nhiều vi mạch nhớ nhằm một trong ba mục đích sau: - Tăng độ dài nhớ, nhưng không làm tăng số lượng từ nhớ. - Tăng số lượng từ nhớ nhưng không làm tăng độ dài từ nhớ. - Tăng cả số lượng và độ dài từ nhớ. 7.5.1 Mở rộng độ dài từ Trên một chíp nhớ, có thể có được 1 đến một số hữu hạn lối ra, thường là 4 hoặc 8 bit. Muốn có độ dài từ lớn hơn, chẳng hạn từ 4 lên 8 hoặc 16 bit, ta tiến hành ghép nhiều chíp nhớ như A0 BUS địa chỉ chỉ ở hình 7-10 đối với RAM. Đối với ROM cách An-1 làm cũng tương tự, chỉ khác trong trường hợp này, có thể không có lối vào R/⎯W. R / W 7.5.2 Mở rộng dung lượng RAM R / W RAM I II Muốn mở rộng dung lượng, ta cũng ghép CS CS CS ° ° nhiều chíp lại với nhau. Như đã biết, dung lượng có liên quan đến số lối vào địa chỉ (C = 2N x độ dài từ, với N là số lối vào địa chỉ). Cứ tăng 1 chíp D0 BUS dữ liệu thì cần có thêm một lối vào địa chỉ. Khác với trường hợp mở rộng độ dài từ, khi BUS dữ liệu Dn-1 mở rộng dung lượng các lối vào/ra dữ liệu D và Hình 7-10. Sơ đồ mở rộng độ dài từ. 151
  29. Chương 7: Bộ nhớ bán dẫn R/ w được nối song song. Một phần dung lượng được trữ vào mỗi chíp. Sự phân chia này dựa trên cơ sở tổ hợp địa chỉ vào và lối vào điều khiển. Hình 7-11 là một sơ đồ ví dụ. A0 A A0 0 A0 A0 IC 1 IC 2 IC 3 IC 4 A11 A1 A1 A A 2k 2k 1 2k 1 2k CS 1 CS2 CS3 CS4 A12 Bộ giải A mã vào 13 2 ra 4 Hình 7-11. Phương pháp mở rộng dung lượng. Để thực hiện phép mở rộng ta phải sử dụng một số lối vào địa chỉ dành riêng cho bộ giải mã (thường là các địa chỉ có trọng số cao). Ở sơ đồ trên ta chọn 2 địa chỉ A12 và A13 để giải mã. Do đó ta có thể nhận được 4 giá trị ra tương ứng. Các giá trị này tác động lên các lối vào CS để mở tuần tự các IC nhớ. Các IC nhớ này có thể làm ROM hoặc RAM hoặc cả hai là tùy chọn. Tuần tự mở các IC theo A12, A13 như chỉ ra ở bảng hoạt động sau. A13 A12 CS IC mở Khoảng địa chỉ 0 0 CS1 IC I 000016 - 0FFF16 0 1 CS2 IC II 100016 - 1FFF16 1 0 CS3 IC III 200016 - 2FFF16 1 1 CS4 IC IV 300016 - 3FFF16 Kỹ thuật này thường được ứng dụng trong các hệ thống vi xử lý, phổ biến nhất là các máy vi tính. Phương pháp này không chỉ cho phép mở rộng dung lượng, mà còn tạo ra sự phân vùng nhớ. Chỉ cần ba địa chỉ giải mã đã có thể tạo ra được 8 vùng nhớ với dung lượng tùy thuộc các chíp thành phần. TÓM TẮT Trong chương này chúng ta trình bày nguyên lý cấu tạo, các tính năng cơ bản của các loại bộ nhớ bán dẫn: ROM, PROM, EPROM, EEPROM, SRAM, DRAM, FLASH, CACHE. Các chip RAM không thích hợp cho các chương trình khởi động do các thông tin trên đó bị mất khi tắt nguồn. Do vậy phải dùng đến ROM, trong đó các số liệu cần lưu trữ được viết một lần theo cách không bay hơi để nhằm giữ được mãi. Trong những năm gần đây, một loại bộ nhớ không bay hơi mới đã xuất hiện trên thị trường, thường được sử dụng thay thế cho các ổ đĩa mềm và cứng trong những máy tính. Đó là bộ nhớ flash. Cấu trúc của chúng cơ bản như EEPROM, chỉ có lớp kênh ôxit ở các ô nhớ mỏng hơn. Với các máy tính có tốc độ nhanh (trên 33MHz), cần phải xen các trạng thái đợi khi truy xuất dữ liệu tới các DRAM rẻ tiền nhưng có thời gian thâm nhập chậm (60-120ns). Điều này làm giảm hiệu suất của máy. Có thể giải quyết bằng cách dùng các SRAM có thời gian thâm nhập 152
  30. Chương 7: Bộ nhớ bán dẫn ngắn hơn (20-25 ns, thậm chí 12 ns) nhưng giá thành lại rất đắt. Bộ nhớ Cache kết hợp được các lợi điểm nhanh của SRAM và rẻ của DRAM. Trong chương này còn giới thiệu cách mở rộng dung lượng và độ dài từ của bộ nhớ bán dẫn. CÂU HỎI ÔN TẬP 1. Bộ nhớ ROM là bộ nhớ: a. Chỉ có thể đọc. b. Chỉ có thể viết. c. Có thể vừa đọc vừa viết. d. Không có phương án nào đúng. 2. Bộ nhớ RAM là bộ nhớ: a. Chỉ có thể đọc. b. Chỉ có thể viết. c. Có thể vừa đọc vừa viết. d. Không có phương án nào đúng. 3. Linh kiện lưu giữ bit thông tin của DRAM là: a. Transistor. b. Trigơ. c. Tụ điện. d. Diode. 4. Linh kiện lưu giữ bit thông tin của SRAM là: a. Transistor. b. Trigơ. c. Tụ điện. d. Diode. 5. MROM được chế tạo bởi công nghệ : a. Lưỡng cực. b. MOS. c. Lưỡng cực và MOS. d. Không có phương án nào đúng. 6. PROM là loại ROM có thể: a. Chỉ lập trình được một lần. b. Lập trình được nhiều lần. 153
  31. Chương 7: Bộ nhớ bán dẫn c. Lập trình được và xoá được. d. Không có phương án nào đúng. 7. Linh kiện lưu giữ bit thông tin của EPROM là: a. Transistor lưỡng cực. b. Transistor trường. c. Tụ điện. d. Diode. 8. Trong EPROM, việc nạp các điện tích vào vùng cửa nổi có nghĩa là: a. Tạo các ô nhớ mang giá trị 0. b. Tạo các ô nhớ mang giá trị 1. c. Tạo các ô nhớ mang giá trị 0 và 1. d. Không có phương án nào đúng. 9. EEPROM là loại ROM có thể: a. Chỉ lập trình được một lần. b. Lập trình được và xoá được một lần. c. Lập trình được và xoá được nhiều lần. d. Không có phương án nào đúng. 10. Muốn xoá dữ liệu trong EEPROM thì cần: a. Chiếu tia tử ngoại vào. b. Cần đặt vào cực cửa điều khiển và cực máng một điện thế có giá trị 20V. c. Cần đặt vào cực cửa điều khiển và cực máng một điện thế có giá trị - 20V. d. Cả phương án trên đều đúng. 11. Bộ nhớ FLASH là loại bộ nhớ: a. Mất dữ liệu khi mất nguồn nuôi. b. Không mất dữ liệu khi mất nguồn nuôi. c. Bị mất dần dữ liệu ngay cả khi có nguồn nuôi. d. Không có phương án nào đúng. 12. Bộ nhớ FLASH là loại bộ nhớ có thể thay thế cho: a. Ổ đĩa mềm. b. Ổ đĩa cứng. c. Ổ mềm và ổ cứng có dung lượng nhỏ. d. Không có phương án nào đúng. 154
  32. Chương 8: Logic lập trình (PLD) CHƯƠNG 8: LOGIC LẬP TRÌNH (PLD) GIỚI THIỆU Các mạch kỹ thuật số tổ hợp và tuần tự đã được đề cập ở các chương trước. Các IC số rất đa dạng từ thực hiện các phép tính kỹ thuật số căn bản đến các chức năng phức tạp khác như: bộ hợp kênh, phân kênh, bộ cộng, so sánh, bộ mã hoá, giải mã, bộ đếm Chúng là các IC số có chức năng cố định, tức là mỗi IC thực hiện một chứ năng chuyên biệt. Những linh kiện này được sản xuất một số lượng lớn để đáp ứng nhu cầu ứng dụng phong phú. Để thiết kế một mạch, nhà thiết kế có thể chọn từ các IC có sẵn phù hợp nhất cho mạch điện. Phần thiết kế này có thể được chỉnh sửa để đáp ứng các yêu cầu chuyên biệt của những linh kiện này. Ưu điểm của phương pháp này là: 1. Chi phí phát triển thấp. 2. Vận hành nhanh xung quanh bản thiết kế. 3. Tương đối dễ thử nghiệm các mạch Nhược điểm: 1. Các yêu cầu về kích thước trong bảng mạch lớn. 2. Yêu cầu về điện lớn. 3. Thiếu tính bảo mật. (Các bảng mạch có thể bị sao chép). 4. Các yêu cầu về chi phí bổ sung, khoảng trống, điện cần thiết để chỉnh sửa bản thiết kế hoặc trình bày các tính năng khác. Để khắc phục những nhược điểm của thiết kế bằng cách sử dụng các IC chức năng cố định, các mạch tích hợp chuyên biệt ứng dụng (ASIC-Aplication Specific IC) đã được phát triển. Các ASIC đã được thiết kế để đáp ứng các yêu cầu chuyên biệt của một mạch và được giới thiệu bởi một nhà sản xuất IC. Các thiết kế này quá phức tạp không thể thực hiện bằng cách sử dụng các IC chức năng cố định được. Ưu điểm của phương pháp này là: 1. Giảm thiểu được kích thước thông qua việc sử dụng mức tích hợp cao. 2. Giảm thiểu được yêu cầu về điện. 3. Nếu được sản xuất theo một quy mô lớn thì chi phí giảm đáng kể. 4. Việc thiết kế được thực thi dưới dạng này thì hoàn toàn không thể sao chép được. Nhược điểm: 1. Chi phí phát triển ban đầu có thể cực kỳ lớn. 155
  33. Chương 8: Logic lập trình (PLD) 2. Các phương pháp thử nghiệm phải được phát triển và điều này làm gia tăng chi phí và công sức. Có một phương pháp khác có các ưu điểm của hai phương pháp trên là sử dụng các thiết bị logic có thể lập trình được (PLD). Một thiết bị logic có thể lập trình là một IC mà người dùng có thể cấu hình để chúng có khả năng thực thi các chức năng logic như mong muốn. Đây là một chip LSI có chứa một cấu trúc “bình thường” và cho phép nhà thiết kế tạo tuỳ biến cho nó để dùng cho bất kỳ ứng dụng đặc biệt nào, tức là nó có thể được người dùng lập trình để thực hiện một chức năng cần thiết cho ứng dụng của họ. Các PLD có các ưu điểm sau: 1. Chu kỳ thiết kế ngắn. 2. Chi phí phát triển thấp. 3. Giảm thiểu được yêu cầu khoảng trống trên bảng mạch. 4. Giảm thiểu được yêu cầu về điện. 5. Bảo đảm tính bảo mật của thiết kế. 6. Mạch được kết chặt lại. 7. Tốc độ đảo mạch nhanh hơn. 8. Mật độ tích hợp cao. 9. Chi phí sản xuất số lượng lớn thấp. PLD cũng cho phép nhà thiết kế có nhiều phương tiện linh động hơn để thí nghiệm với các bản thiết kế bởi vì chúng có thể được lập trình lại trong vài giây. Với nhiều ưu điểm như vậy nên hiện nay có một số lượng lớn các PLD được các nhà sản xuất IC tạo ra với nhiều tính năng đa dạng và nhiều tuỳ chọn có sẵn để nhà thiết kế mạch có thể sử dụng một cách phổ biến. Cấu trúc và các tính năng đa dạng khác của các PLD như ROM, các mảng logic lập trình (PLA). Logic mảng có thể lập trình (PAL), thiết bị logic có thể lập trình đơn giản (SPLD), và các mảng cổng có thể lập trình trường (FPGA) sẽ được đề cập ở đây. Công dụng của những thiết bị này yêu cầu phải có thay đổi thiết kế truyền thống, mặc dầu các khái niệm cơ bản vẫn được giữ lại không đổi. NỘI DUNG 8.1. GIỚI THIỆU CHUNG VỀ LOGIC KHẢ TRÌNH (PLD) Vi mạch lập trình, viết tắt là PLD (Programmable Logic Device), là loại cấu kiện điện tử có nhiều ưu điểm và hiện nay đang được phát triển rất mạnh. Về nguyên lý, chúng có cấu tạo rất giống với PROM. Việc lập trình cho PLD có thể được thực hiện bằng các công nghệ khác nhau, dựa trên cơ sở bẻ cầu chì hoặc chuyển mạch. Tuy nhiên, ứng dụng của PLD lại rất khác với PROM. Một PLD, được tạo thành bằng một số cổng AND, OR, XOR hoặc cả các trigơ, có thể thực hiện nhiều hàm Boole khác nhau. 156
  34. Chương 8: Logic lập trình (PLD) 8.2 SPLD SPLD - cấu kiện logic khả trình đơn giản. Đây là loại cấu kiện số có nhiều ưu điểm và cũng đã được phát triển rất mạnh. Về nguyên lý, chúng có cấu tạo rất giống với PROM. Việc lập trình cho SPLD có thể được thực hiện bằng các công nghệ khác nhau, dựa trên cơ sở thực hiện các kết nối bằng cách sử dụng cầu chì hoặc chuyển mạch. Một SPLD, được tạo thành bằng một số mảng cổng AND, OR, XOR hoặc cả các triger, có thể thực hiện nhiều hàm Boole khác nhau. Các SPLD đều có cấu tạo dựa trên một trong hai dạng cấu trúc chính: mảng logic khả trình PLA (Programmable Logic Array) và logic mảng khả trình PAL (Programmable Array Logic). Đầu vào PAL Đầu vào PLA Đầu ra Đầu ra Hình 8.1 - So sánh giữa PAL và PLA Thành phần cơ bản của PLA là một mảng AND và một mảng OR lập trình được. Mỗi mảng AND, OR gồm các hàng và các cột liên kết với nhau. Tại mỗi điểm giao giữa hàng và cột, có một cầu chì. Khi cầu chì đóng, tại điểm đó có kết nối giữa hàng và cột, khi cầu chì ngắt, tại đó không có kết nối. Việc đóng ngắt cầu chì được thực hiện bằng phần mềm (do lập trình viên hoặc sử dụng công cụ In- System Programming (ISP) – lập trình trên hệ thống). Cấu trúc PLA tạo ra sự tổ hợp tùy ý giữa các cổng AND và OR, cho mật độ logic cao nhưng tốc độ chậm, số lượng cầu chì lớn. Vì vậy, sau này người ta đã đưa ra một kiểu kiến trúc khác là logic mảng khả trình PAL (Programmable Aray Logic). Công nghệ PLD xuất hiện từ rất sớm với các công ty như Xilinx – sản xuất vi mạch CMOS công suất cực thấp dựa trên công nghệ Flash. PLD dựa trên công nghệ Flash cho phép lập trình và xoá vi mạch nhiều lần bằng điện, nhờ đó tiết kiệm được thời gian so với xoá vi mạch bằng tia cực tím. 8.3. CPLD (Complex PLD) 157
  35. Chương 8: Logic lập trình (PLD) Interconnect IO/Registers/Logic IO/Registers/Logic Hình vẽ 8.2 - Kiến trúc của CPLD Thiết bị logic khả trình phức hợp (CPLD) có mật độ logic cao hơn so với các PLD đơn giản như đã xét ở trên (PLA và PAL). CPLD bao gồm nhiều mạch logic, mỗi mạch có thể coi là một SPLD. Trong một mạch đơn chỉ thực hiện các chức năng logic đơn giản. Các chức năng logic phức tạp hơn cần số lượng khối nhiều hơn, sử dụng ma trận liên kết chung giữa các khối để tạo kết nối. CPLD thường dùng để điều khiển ghép cổng phức hợp ở tốc độ rất cao (5ns, tương đương với 200 MHz). Kiến trúc cơ bản của CPLD được minh hoạ trong hình vẽ 8.2. CPLD có cấu trúc đồng nhất gồm nhiều khối chức năng "Function Block" được kết nối với nhau thông qua một ma trận kết nối trung tâm "Interconnect Array". Mỗi khối function block gồm có một khối logic - gồm các hạng tích AND và OR sắp xếp giống PLA hoặc PAL, cho phép thực hiện các hàm logic tổ hợp- và nhiều khối MC (Macrocell) có chứa tài nguyên là các Trigơ cho phép xây dựng các thanh ghi và mạch tuần tự. Phần lõi bên trong của CPLD được nối ra bên ngoài thông qua các khối vào ra I/O cho phép thiết lập chức năng cho các chân của IC có chức 158
  36. Chương 8: Logic lập trình (PLD) năng vào hoặc ra hoặc vừa là chân vào vừa là chân ra, ngoài ra còn có thể thiết lập các chân I/O này làm việc ở các mức logic khác nhau, có điện trở pull-up hoặc pull-down Với cấu trúc đồng nhất, giá thành rẻ, tính năng khá mạnh, dễ sử dụng CPLD đã và đang được sử dụng rất rộng rãi trong thực tế, giúp cho nhà sản xuất phát triển nhanh sản phẩm của mình với giá thành rẻ. Đặc biệt hiện nay các hãng đã phát triển các họ CPLD với tính năng rất mạnh, công suất tiêu thụ thấp, chúng đang được sử dụng rất nhiều để phát triển các sản phẩm điện tử, viễn thông, công nghệ thông tin, nhất là trong các thiết bị cầm tay, di động Trong thực tế rất có nhiều loại CPLD khác nhau, của các hãng khác nhau, và đã được phát triển với nhiều chủng loại, thế hệ CPLD khác nhau. Cấu tạo, dung lượng, tính năng, đặc điểm, ứng dụng của mỗi loại CPLD cũng rất khác nhau. Trong giáo trình này không đi sâu trình bày cấu tạo cụ thể của các họ CPLD, mà chỉ trình bày kiến trúc chung đơn giản nhất của CPLD. Khi sử dụng cụ thể loại CPLD nào, người học nên tham khảo các tài liệu khác, nhất là tham khảo các tài liệu kỹ thuật được cung cấp kèm theo cấu kiện do các hãng đưa ra. Các hãng điện tử nổi tiếng trên thế giới đang sở hữu, phát triển, cung cấp các loại cấu kiện CPLD là Xilinx, Altera 8.4. FPGA FPGA (Field Programmable Gate Array - Ma trận cổng lập trình được theo trường): có cấu trúc và hoạt động phức tạp hơn CPLD. Nó có thể thực hiện những chức năng phức tạp ưu việt hơn CPLD. Năm 1985, công ty Xilinx đưa ra ý tưởng hoàn toàn mới, đó là kết hợp thời gian hoàn thành sản phẩm và khả năng điều khiển được của PLD với mật độ và ưu thế về chi phí của GateArray. Từ đó, FPGA ra đời. Hiện nay, Xilinx vẫn là nhà sản xuất chip FPGA số một trên thế giới. Hình 8-3. Kiến trúc chung của FPGA Cấu trúc FPGA đơn giản gồm các tế bào logic (Logic Cell), các khối cách đều nhau, liên kết nhờ các đường kết nối có thể thay đổi được theo yêu cầu của người thiết kế. Nghĩa là người thiết kế có quyền thiết kế, lập trình và thay đổi mạch điện. Hiện nay, FPGA có mật độ khá cao, lên tới hàng trăm tỷ cổng và cấu trúc cũng đa dạng, phức tạp hơn. Nhiều chức năng phức tạp đã được tích hợp sẵn để tăng hiệu quả sử dụng FPGA. Ví dụ như ngoài những khối tế bào logic, nhiều họ FPGA đã được tích hợp thêm các khối chức năng như các bộ nhân cứng, khối nhớ, PLL, thậm chí cả một bộ vi xử lý mạnh Có hai loại FPGA cơ bản: loại lập trình lại được, dựa trên công nghệ SRAM và loại lập trình một lần. 159
  37. Chương 8: Logic lập trình (PLD) • Loại lập trình lại được (dựa trên SRAM): - SRAM xác định các kết nối - SRAM định nghĩa các hàm logic trong bảng ánh xạ (LUT- Look Up Table) • Loại lập trình một lần: - Kết nối dạng bẻ cầu chì - Sử dụng các cổng logic truyền thống Ô nhớ để điều khiển bộ chọn kênh Đầu ra Đầu vào Ô nhớ điều Bảng LUT 4 đầu vào khiển điểm kết nối Điểm kết nố i Hình 8.4 - Cấu trúc của logic cell đơn giản Hai dạng này khác nhau về quy trình thực hiện tế bào logic và cơ chế được sử dụng để tạo kết nối trong thiết bị. Chip FPGA lập trình một lần sử dụng phương pháp bẻ cầu chì (kết nối được tạo ra bằng cách đóng cầu chì) để tạo kết nối tạm thời trong chip, do đó không cần SPROM hoặc các phương tiện khác để nạp chương trình vào FPGA. Tuy nhiên, mỗi lần thay đổi thiết kế, phải bỏ hoàn toàn chip cũ đi. Tế bào logic OTP tương tự như PLD với các cổng và các trigơ định trước. Dạng FPGA quan trọng hơn và được dùng phổ biến hơn cả là dạng lập trình lại được, dựa trên SRAM. Trên thực tế, FPGA SRAM được lập trình lại mỗi khi bật nguồn, vì FPGA là dạng chip nhớ tạm thời. Do đó, mỗi chip FPGA đều cần có một bộ nhớ PROM nối tiếp hoặc một bộ nhớ hệ thống. Trong tế bào logic SRAM, thay vì các cổng thông thường, người ta sử dụng bảng ánh xạ (LUT). Bảng này xác định các giá trị đầu ra dựa trên các giá trị đầu vào, sử dụng để xây dựng các hàm logic tổ hợp. Trong sơ đồ “Tế bào logic SRAM” minh hoạ ở hình vẽ 8-3, 16 tổ hợp khác nhau của 4 đầu vào sẽ xác định giá trị của đầu ra). Các các ô nhớ SRAM cũng được sử dụng để điều khiển kết nối . 160
  38. Chương 8: Logic lập trình (PLD) 8.5. SO SÁNH GIỮA CPLD VÀ FPGA CPLD FPGA - Cấu trúc theo mảng các hạng tích - Cấu trúc dựa vào LUT - Mảng kết nối trung tâm - Ma trận kết nối 2 chiều X-Y - Mật độ tích hợp trung bình - Mật độ tích hợp cao - Tỷ lệ số chân I/O trên microcell lớn - Tỷ lệ số chân I/O trên microcell nhỏ - Cấu hình được lưu lại khi mất điện, và - Cấu hình nạp vào SRAM, khi mất điện sẽ không không đổi trong quá trình hoạt động còn, cần có bộ nhớ cấu hình PROM, cấu hình có thể được nạp động trong quá trình hoạt động. - Cấu trúc đồng nhất –Cấu trúc không đồng nhất – Nhiều tài nguyên: DLL (Delay_Locked Loop: Vòng khoá pha trễ ), bộ nhớ, các bộ nhân –Ứng dụng: mã hoá và giải mã logic, các - Ứng dụng: PCI (Peripheral Component máy trạng thái hay các giao diện bus Interface), giao tiếp nối tiếp tốc độ cao và các bộ vi chuẩn (SPI, I2C, SMBus ), ưu điểm nổi xử lý nhúng , ưu thế nổi bật khi thiết kế phức bật khi thiết kế các mạch logic nhiều đầu tạp, cần nhiều tài nguyên. vào. 8.6. QUY TRÌNH THIẾT KẾ CHO CPLD/FPGA Trong thực tế có rất nhiều hãng điện tử trên thế giới cung cấp các sản phẩm PLD và bộ công cụ phần mềm thiết kế đi kèm. Mỗi họ CPLD, FPGA của các hãng có những quy trình thiết kế khác nhau dành cho chúng, tuy nhiên về cơ bản chúng vẫn có quy trình thiết kế chung nhất đinh. Không mất tính tổng quát, để người học tiếp cận dễ dàng hơn, trong tài liệu này việc trình bày quy trình thiết kế cho CPLD/FPGA được lấy ví dụ, cụ thể hoá cho CPLD/FPGA của hãng Xilinx – Một hãng cung cấp các sản phẩm PLD số 1 thế giới hiện nay – sử dụng bộ công cụ phần mềm thiết kế ISE. 8.6.1. Yêu cầu chung khi thiết kế với CPLD/FPGA 8.6.1.1 Chọn vi mạch CPLD hoặc FPGA phù hợp Khi phát triển các hệ thống số sử dụng CPLD/FPGA bước đầu tiên cần được thực hiện là phân tích bài toán, lựa chọn vi mạch CPLD hoặc FPGA phù hợp. Việc chọn được vi mạch, công nghệ phù hợp nhất cho các tiêu chuẩn thiết kế, được tiến hành theo các yêu cầu sau: Mật độ: là mật độ logic dự tính của linh kiện, đặc trưng bởi khái niệm "số lượng cổng". Số lượng thanh ghi: Phải tính được số thanh ghi cần cho bộ đếm, máy trạng thái, thanh ghi và bộ chốt. Số lượng macrocell trong vi mạch tối thiểu phải bằng số thanh ghi cần có. Số lượng chân vào/ra: phải xác định vi mạch thiết kế cần bao nhiêu đầu vào, bao nhiêu đầu ra. 161
  39. Chương 8: Logic lập trình (PLD) Yêu cầu về tốc độ: Tuyến tổ hợp nhanh nhất sẽ xác định tpd (trễ truyền trong vi mạch, tính theo ns). Mạch tuần tự nhanh nhất sẽ xác định tần số tối đa của vi mạch (fMax). Đóng vỏ: Phải xác định vi mạch cần gọn nhất hay chỉ sử dụng dạng QFP thông thường. Hoặc vi mạch thiết kế thuộc dạng có lắp chân cắm, trong trường hợp này là vi mạch PLCC. Công suất thấp: Phải xác định sản phẩm sẽ sử dụng nguồn pin hay năng lượng mặt trời, thiết kế có yêu cầu công suất tiêu thụ thấp hay không, vấn đề tổn hao nhiệt có quan trọng hay không? Chức năng cấp hệ thống: Phải xác định bo mạch có bao gồm nhiều vi mạch đa mức điện áp hay không, giữa các vi mạch có phải chuyển mức hay không, có yêu cầu sửa dạng xung đồng bộ hay không, có yêu cầu giao tiếp giữa bộ nhớ và bộ vi xử lý hay không? 8.6.1.2 Chọn giải pháp cấu hình cho CPDL/FPGA Lập trình ngay trên hệ thống Các CPLD và FPGA của các hãng nói chung, của Xilinx nói riêng có thể được lập trình ngay trên hệ thống (vi mạch đã được hàn vào mạch ứng dụng) thông qua giao thức JTAG (Joint Test Advisory Group: Chuẩn giao tiếp ) đã được tích hợp sẵn trong IC. Người thiết kế sử dụng cáp nạp để nạp cấu hình cho CPLD hoặc FPGA. Xilinx đưa ra một chuẩn cáp nạp như sau: + MultiLINX : Cáp nạp dựa trên giao chuẩn giao tiếp nối tiếp USB hoặc RS232, cáp nạp này có tốc độ truyền trong dải rộng và giao diện có điện áp điều chỉnh được để phù hợp với việc giao tiếp với các hệ thống và các chân I/O hoạt động ở các mức điện áp khác nhau 5V; 3,3V; 2,5V. Và được thiết kế để hỗ trợ để cho các phần mềm gỡ rối phần cứng trước kia, nay chúng đã trở lên lỗi thời khi có sự ra đời của công cụ gỡ rối phần cứng ChipScope ILA. + Parallel Cable IV: Cáp nạp sử dụng cổng giao tiếp song song của máy tính, được phát triển để thay thế cho chuẩn cáp nạp Parallel Cable III và cho phép tăng tốc độ lên hơn 10 lần và hỗ trợ cho tất các các vi mạch sử dụng mức điện áp I/O từ 5V xuống 1,5V. Hiện nay chuẩn cáp nạp này được dùng phổ biến hơn cả. Lập trình bên ngoài Các CPLD và FPGA của Xilinx cũng có thể được lập trình bên ngoài bởi bộ lập trình chip HW130 của Xilinx cũng như các bộ lập trình của các nhà phát triển khác. Điều này cũng thuận tiện cho việc sử dụng các chip được lập trình trước trong thời gian sản xuất. Cấu hình của CPLD được nạp vào FLASH nên khi mất điện cấu hình không bị mất đi, trong khi đó cấu hình khi hoạt động của FPGA được ghi vào SRAM nên sẽ mất đi khi mất điện, vì vậy cần sử dụng FPGA và kết hợp với PROM lưu cấu hình phù hợp, mỗi khi bật nguồn, cấu hình sẽ nạp tự động từ PROM vào FPGA. Có thể sử dụng PROM nối tiếp hoặc song song, tuy nhiên thì loại PROM nối tiếp hay được sử dụng hơn cả. Khi thiết kế cần chọn loại PROM có dung lượng phù hợp với mật độ của các loại FPGA khác nhau. Ngoài ra Xilinx còn cung cấp các giải pháp được thiết kế trước, dễ sử dụng để cấu hình cho tất cả CPLD và FPGA của Xilinx, nhất là khi thiết kế các hệ thống phức tạp. Tất cả các nội dung liên quan đến cấu hình, PROM cho FPGA hay ISP cho CPLD, đều được đưa ra. Các giải pháp sử 162
  40. Chương 8: Logic lập trình (PLD) dụng công cụ 3rd part boundary scan, các giải pháp phần mềm kèm theo, cáp ISP, thiết bị kiểm tra tự động ATE và hỗ trợ lập trình cũng như các thiết bị lưu trữ cấu hình. Giải pháp cấu hình hiện đại nhất là nhóm cấu hình System ACE. Với giải pháp System ACE, người thiết kế có thể dễ dàng sử dụng giao diện vi xử lí trong System ACE để trực tiếp phối hợp cấu hình FPGA theo các yêu cầu của hệ thống. Giải pháp đầu tiên trong nhóm này là System ACE CF, cung cấp công nghệ điều khiển ổ đĩa Microdrive kích thước một inch và CompactFlash cũng như bộ lưu trữ cấu hình có dung lượng 8 gigabits. Ngoài ra, System ACE CF cũng được thiết kế trước, cung cấp các đặc tính hiện đại để tận dụng khả năng cấu hình lại linh hoạt của FPGA, bao gồm: - Cấu hình multi-board từ một nguồn duy nhất - Quản lí bitstream đa cấu hình - Nâng cấp cấu hình qua mạng (IRL) - Hot-swapping - Khởi tạo trung tâm xử lí và lưu trữ phần mềm - Mã hóa Với System ACE CF, người thiết kế có thể thực hiện được gần như toàn bộ các yêu cầu cấu hình cho FPGA. Các khả năng bổ trợ hệ thống này cho phép người thiết kế sử dụng FPGA thỏa mãn các yêu cầu định trước về mặt thiết kế và thời gian xử lí lỗi. Ngoài ra, các cổng vi xử lí và cổng kiểm tra JTAG còn cho phép tích hợp System ACE trong mọi hệ thống. Một số đặc điểm của giải pháp cấu hình System ACE: - Độ linh hoạt: Với System ACE CF, có thể sử dụng một thiết kế cho nhiều ứng dụng khác nhau, nhờ đó giảm đáng kể thời gian hoàn thành sản phẩm. Thay vì thiết kế vài bo mạch tương tự nhau phù hợp với các chuẩn khác nhau, giờ đây người thiết kế chỉ phải thiết kế một bo mạch duy nhất với nhiều cấu hình được lưu trữ trong bộ nhớ System ACE CF. Mỗi bo có thể chọn các cấu hình phù hợp với các chuẩn khác nhau bằng cách khởi tạo giá trị mặc định tương ứng được lưu trong bộ nhớ ACE. Hệ thống còn cho phép lưu nhiều cấu hình cho một thiết kế trong một System ACE CF đơn. Ví dụ như trong quá trình thiết kế mẫu, người thiết kế có thể lưu các cấu hình hoạt động, cấu hình kiểm tra và cấu hình gỡ rối trong bộ nhớ ACE, đồng thời có thể chọn các cấu hình khác để chạy thử bản thiết kế của mình. Để hỗ trợ quản lý nhiều bitstream và tích hợp điều khiển cấu hình FPGA với hoạt động của hệ thống, System ACE có một cổng vi xử lí trong hệ thống. Cổng này cho phép bộ xử lí của hệ thống thay đổi cấu hình mặc định, cấu hình lại trigơ, cấu hình lại từng FPGA hoặc một nhóm FPGA, truy nhập vào các file không cấu hình được lưu trong khối CompactFlash, hoặc dùng khối CompactFlash làm bộ nhớ chung cho hệ thống. Với các FPGA có trung tâm xử lí kèm theo, System ACE CF cung cấp giải pháp 3 trong 1 để quản lí phần cứng và phần mềm. System ACE CF có thể cấu hình khung FPGA, khởi tạo trung tâm vi xử lí, và cung cấp các ứng dụng phần mềm cho trung tâm này nếu cần mà không phải thêm bất cứ thiết bị phần cứng nào. 163
  41. Chương 8: Logic lập trình (PLD) + Mật độ: Với mật độ logic cao chưa từng thấy (trên 8 Gb), một System ACE CF có thể cấu hình cho hàng trăm FPGA và có thể thay thế cho các mảng PROM cấu hình. Người thiết kế có thể lưu một số lượng lớn các thiết kế khác nhau cho một mảng FPGA trong cùng một khối nhớ. System ACE CF sử dụng hệ thống file FAT (File Allocation Table: bảng sắp xếp file tiêu chuẩn), do đó người thiết kế có thể lưu cả những file không ở dạng bitstream hoặc sử dụng bộ nhớ thừa làm bộ nhớ chuẩn cho hệ thống. + Khả năng quản lý tập trung: System ACE CF được thiết kế để quản lí cấu hình theo yêu cầu. Một System ACE CF có thể cấu hình cho một hoặc nhiều bo FPGA kết nối qua một back- plane. Khả năng tập trung cho phép đơn giản hóa quá trình quản lí và nâng cấp cấu hình. Để thay đổi hay nâng cấp cấu hình của một hệ thống, người thiết kế có thể vào khối nhớ, thực hiện các thay đổi cần thiết trên màn hình máy tính, chỉnh lại nội dung trong hệ thống qua cổng vi xử lí; hoặc tải cấu hình mới về qua mạng, sử dụng IRL. 8.6.1.3 Chọn công cụ phần mềm phù hợp Xilinx đã cung cấp các công cụ thiết kế điện tử hoàn chỉnh, cho phép thực hiện thiết kế trên các thiết bị logic khả trình của Xilinx. Các công cụ này kết hợp công nghệ tiên tiến với giao diện đồ họa linh hoạt, dễ sử dụng để người thiết kế có được thiết kế tối ưu. Bộ công cụ phần mềm hiện đang được sử dụng rộng rãi là ISE với phiên bản mới nhất là 7.0 (năm 2005). Xilink cũng cung cấp ISE dưới dạng các gói phần mềm có cấu hình khác nhau với giá thành khác nhau: + ISE WebPACK - bản miễn phí có thể dùng để thiết kế cho tất cả các họ CPLD của Xilinx + Gói phần mềm cơ bản BASEX: có thể thiết kế cho các loại chíp sau: Virtex-4, FPGA LX15, LX25, SX25, FX12, Spartan-3 FPGA lên đến 1500 ngàn cổng và tất cả các họ CPLD. + Gói phần mềm Foundation: có thể thiết kế cho tất cả các loại FPGA và CPLD của Xilinx Ngoài ra Xilinx còn phát triển các bộ công cụ phần mềm tiện ích khác như System Generator hỗ trợ cho các thiết kế DSP (Digital Signal Processor: Bộ xử lý tín hiệu số), hay EDK (Embbleded Dvelopment Kit: Bộ phần mềm phát triển hệ thống) hỗ trợ cho các thiết kế nhúng. ISE được dùng kết hợp với phần mềm mô phỏng ModelSim của Mentor Graphics phiên bản XE được phát triển riêng hỗ trợ cho các họ CPLD/FPGA của Xilinx. 8.6.2 Lưu đồ thiết kế cho CPLD của Xilinx Quá trình thiết kế cho CPLD chủ yếu là thực hiện trên các công cụ phần mềm, lưu đồ thiết kế chung cho CPLD (Ví dụ sử dụng phần mềm ISE) như hình vẽ sau, bao gồm các bước như sau: + Nhập thiết kế (Design Entry): Đây là bước đầu tiên và quan trọng nhất của quá trình thiết kế cho CPLD. Các công cụ thiết kế cho phép nhập thiết kế cho phép nhập thiết kế theo các cách sau: - Nhập thiết kế theo sơ đồ nguyên lý Schematic, người thiết kế sử dụng các modul đã có sẵn trong thư viện Schematic để ghép nối chúng với nhau tạo thành bản thiết kế theo yêu cầu, cách này có thể thực hiện thiết kế nhanh nhưng sẽ rất khó khăn và không tối ưu tài nguyên của CPLD 164
  42. Chương 8: Logic lập trình (PLD) khi thiết kế phức tạp, và thiết kế không thể sử dụng sang công cụ thiết kế CPLD của các hãng khác. Từ sơ đồ nguyên lý thiết kế được công cụ phần mềm sẽ chuyển đổi sang file ngôn ngữ mô tả phần cứng HDL, mà phổ biến là VHDL hoặc Verilog. - Nhập thiết kế sử dụng ngôn ngữ mô tả phần cứng HDL (VHDL, Verilog, ABEL, AHDL ), Người thiết kế có thể sử dụng chương trình soạn thảo để thực hiện việc mô tả toàn bộ bản thiết kế của mình dưới dạng ngôn ngữ HDL nào đó mà công cụ thiết kế có thể tổng hợp được. Có rất nhiều phương pháp mô tả, mức độ trừu tượng khác nhau khi thiết kế, mỗi cách mô tả khác nhau có thể tạo ra một cấu trúc mạch khác nhau trong CPLD mặc dù chúng có cùng chức năng. Design Entry Schematic HDL State Machines ECS Verilog/VHDLL StateCad Design Verification Functional Simulation ModelSim XE Design Synthesis Xilinx Synthesis Tool XST Design Implementation Translate Map Place and Route Timing Simulation Static Timing Analysis (ECS) ModelSim XE Configuration Download (iMPACTE) 165
  43. Chương 8: Logic lập trình (PLD) Hình 8.5- Lưu đồ thiết kế CPLD Do đó người thiết kế cần thực hiện phân tích bài toán, tìm hiểu tài nguyên, cấu trúc của CPLD, yêu cầu về thời gian thiết kế để sử dụng kiểu mô tả. Mức độ trừu tượng trong khi mô tả phù hợp vừa đảm bảo yêu cầu về thời gian thiết kế vừa tối ưu được việc sử dụng tài nguyên của CPLD. - Nhập thiết kế dưới dạng sơ đồ: Công cụ thiết kế còn cho phép nhập thiết kế vào dưới dạng sơ đồ mà điển hình là đồ hình trạng thái, sau đó chúng cũng được chuyển đổi sang HDL. Việc nhập thiết kế rất linh hoạt, có thể sử dụng cả 3 cách trên để thực hiện các phần khác nhau của thiết kế. + Kiểm tra, mô phỏng thiết kế (Design Verification): Thực hiện kiểm tra, mô phỏng chức năng hoạt động của thiết kế HDL đã tạo ra ở trên. Các công cụ thiết kế đều hỗ trợ việc mô phỏng chức năng hoạt động của bản thiết kế HDL theo mô hình hoạt động (Behavioral Model), mức độ mô phỏng này độc lập với loại CPLD đã được lựa chọn. Bước này có thể không cần phải thực hiện trong khi thiết kế. + Tổng hợp thiết kế (Design Synthesis): Sau khi hoàn thành mô phỏng thiết kế, bước tổng hợp tiếp theo có nhiệm vụ chuyển thiết kế dưới dạng file vản bản HDL thành dạng file netlist, thực hiện mô tả mạch thực ở mức thấp dưới dạng cổng logic và kết nối giữa chúng với nhau. Có thể sử dụng các công cụ tổng hợp của các hãng khác nhau. Mỗi công cụ có thể tạo ra file netlist theo định dạng riêng (ví dụ của XST của Xilinx XNF- Xilinx Netlist Format) nhưng có thể đặt lựa chọn để tạo ra file netlist dưới dạng định dạng chuẩn EDIF (Electronic Digital Interchange Format) mà tất cả các công cụ có thể hiểu được. U1A U1A U3A U2A U2A U3A Chọn các cổng Thực hiện kết nối Component AND G1 U4A A U1A U4C Component OR G P Component NOT G3 U4B B Net N1: A. G1:a. G3:a Net N2: B. G1:b. G2:a U2A U4D Net N3: G1:c. P U3A Q Net N4: G3:b. G2:b Net N5: G2:c. Q ; Ghép các bộ đệm và/ra Tạo Netlist 166
  44. Chương 8: Logic lập trình (PLD) Hình 8.6- Ví dụ tổng hợp ra file netlist + Thực hiện thiết kế (Design Implementation): Sau khi có file netlist, bước tiếp theo là thực hiện thiết kế, nghĩa là xây dựng cấu hình cho CPLD. Bước này sử dụng file netlist và file ràng buộc "constraints File" (mô tả các nguyên tắc thiết kế, các ràng buộc về vật lý như gán vị trí cho các đầu vào/ra trên chip, các ràng buộc về tốc độ, thời gian, tần số ) để tạo thiết kế sử dụng tài nguyên có sẵn của CPLD. Bước này bao gồm các bước: Translate (biên dịch), Map (Phân bố bản thiết kế vào chip), Place and Route (Định vị và định tuyến kết nối). + Translate (biên dịch): Bước này nhằm thực hiện kiểm tra thiết kế và đảm bảo netlist phù hợp với kiến trúc đã chọn, kiểm tra file ràng buộc "constraints File" của người sử dụng để phát hiện các lỗi mâu thuẫn với tham số của chip đã chọn. Biên dịch thường bao gồm các quá trình: tối ưu hoá, biên dịch thành các thành phần vật lý của thiết bị; kiểm tra ràng buộc thiết kế. Khi kết thúc bước biên dịch, sẽ có một bản báo cáo về các chương trình được sử dụng, danh sách các cổng I/O và các thiết bị được sử dụng trong thiết kế, nhờ đó người thiết kế sẽ lựa chọn được phương án thiết kế tối ưu. + Map: tạo bản phân bố thiết kế tới các tài nguyên cụ thể trong CPLD. Nếu thiết kế quá lớn so với thiết bị được chọn, quy trình này không thể hoàn thành nhiệm vụ của mình. Quá trình Map có các tham số ràng buộc của thiết kế, ví dụ như tham số tốc độ, thời gian của thiết kế, và đôi khi quyết định gắn thêm các thành phần logic để đáp ứng các yêu cầu về thời gian. Map có khả năng thay đổi thiết kế xung quanh các bảng ánh xạ để tạo khả năng thực hiện tốt nhất cho thiết kế. Quy trình này được thực hiện hoàn toàn tự động và cần rất ít tác động đầu vào từ người sử dụng. Bước này nhằm đưa mạch thiết kế vào một thiết bị cụ thể. Bước này cũng tạo ra báo cáo xác nhận các tài nguyên được sử dụng trong chip, mô tả chính xác các phần trong thiết kế được đặt ở vị trí nào trong chip thực tế. + Place and Route (PAR - Định vị trí và định tuyến kết nối) Place là quá trình lựa chọn vị trí phù hợp của mỗi khối chức năng trong thiết kế và đưa các cổng logic của phần đó vào các khối logic hay các modul cụ thể trong CPLD trên cơ sở tối ưu việc kết nối và đảm bảo về các ràng buộc về thời gian. Những phần logic hoạt động tốc độ cao sẽ được xếp cạnh nhau để giảm độ dài đường kết nối. Route là quá trình tạo liên kết vật lý giữa các khối logic. Hầu hết các nhà sản xuất cung cấp công cụ Place and Route tự động cho người sử dụng. Ngoài công cụ tự động, người thiết kế có thể tự Place and Route trong khi thiết kế. Nhà sản xuất cũng cung cấp các công cụ, như “Floorplanner”, để nâng cao hiệu suất quá trình Place and Route do người thiết kế thực hiện so với quá trình tự động. Place and Route là quá trình phức tạp, do đó nó chiếm thời gian nhiều nhất. Tuy nhiên, bước này chỉ có thể hoạt động tốt nếu chip đã chọn đáp ứng đủ các tuyến liên kết cho thiết kế. Nếu không, người thiết kế sẽ phải chọn chip có dung lượng lớn hơn. Sau bước này tạo ra được file cấu hình *.jed có thể được nạp vào cho CPLD. + Timing Simulation (Mô phỏng có tham số thời gian): Sau bước Place and Route người thiết kế có thể thực hiện mô phỏng thiết kế ở mức cổng logic đã được định vị trí và định tuyến trên CPLD, phần mềm sử dụng file cấu hình đã được tạo ra và kết hợp với thư viện về mô hình thời gian của các họ CPLD (Ví dụ ISE của Xilinx thì dùng thư viện VITAL), để thực hiên mô phỏng hoạt động của thiết kế mà có tính đến các tham số thời gian trễ, thời gian thiết lập của các cổng logic trong CPLD. Bước này rất quan trọng với những thiết kế phức tạp, tốc độ lớn. 167
  45. Chương 8: Logic lập trình (PLD) +Configuration (Cấu hình): Gọi chương trình điều khiển việc nạp cấu hình, thực kết nối thiết bị nạp (cáp nạp) đến CPLD và nạp file cấu hình cho CPLD. Với CPLD của hãng Xilinx, quá trình lập trình có thể thực hiện ngay trong hệ thống nhờ công cụ JTAG, hoặc sử dụng bộ lập trình thiết bị chuyên dùng, ví dụ như công cụ JTAG Data I/O, theo chuẩn IEEE/ ANSI 1149.1_1190. Công cụ JTAG là một bộ các nguyên tắc thiết kế, hỗ trợ quá trình kiểm tra, lập trình cho thiết bị và gỡ rối trên chip, trên bo mạch và trên hệ thống. Khả năng lập trình trên hệ thống là ưu điểm của CPLD, cho phép hàn trực tiếp thiết bị lên PCB. Nếu có thay đổi trong thiết kế, sẽ không phải tháo thiết bị ra khỏi bo mạch, mà đơn giản chỉ phải lập trình lại trên hệ thống. 8.6.3 Lưu đồ thiết kế cho FPGA Lưu đồ thiết kế cho FPGA cũng tương tự như lưu đồ thiết kế cho CPLD, chỉ khác ở bước cuối cùng - bước Cấu hình cho FPGA. Ở bước này, đối với FPGA có thêm bước "Create Bit file" để tạo ra file "bitstream" để nạp vào bộ nhớ cấu hình trong FPGA thường là bộ nhớ tạm thời như SRAM. Dòng bit được nạp mang tất cả thông tin để định nghĩa các hàm logic và các liên kết trong thiết kế. Mỗi thiết kế khác nhau có một dòng bit khác nhau. Các thiết bị SRAM mất toàn bộ thông tin mỗi khi ngắt nguồn, do đó khi cần thiết phải nạp dòng bit cấu hình này vào trong PROM (thường sử dụng PROM nối tiếp). Mỗi khi thiết bị được bật nguồn file cấu hình từ PROM sẽ được nạp tự động vào bộ nhớ SRAM của FPGA, và FPGA hoạt động theo cấu hình đã được nạp đó. Configuration Create Bit file Download (iMPACTE) Hình 8.6- Lưu đồ thiết kế FPGA TÓM TẮT Trong chương này trình bày các khái niệm cơ bản của logic lập trình. Với sự phát triển của các thiết bị logic lập trình ta có thể thiết kế các hệ thống kỹ thuật số phức tạp. Các kỹ thuật thiết kế ở cấp cao và các công cụ trợ giúp máy tính cần thiết để tạo nên chức năng thực thi PLD và FPGA hiệu quả. Việc thử nghiệm tính thực thi của PLD và FPGA cũng yêu cầu phải có các công cụ thử nghiệm và sự trợ giúp của máy tính. 168
  46. Chương 9: Ngôn ngữ mô tả phần cứng VHDL CHƯƠNG 9: NGÔN NGỮ MÔ TẢ PHẦN CỨNG VHDL GIỚI THIỆU Trong toàn bộ lưu đồ thiết kế cho CPLD hoặc FPGA, bước nhập thiết kế là bước quan trọng và tốn nhiều công sức nhất, nó quyết định phần lớn đến kết quả của công việc thiết kế. Các công cụ thiết kế hỗ trợ nhiều phương pháp nhập thiết kế khác nhau, tuy nhiên phương pháp nhập thiết kế dùng ngôn ngữ mô tả phần cứng HDL là ưu việt hơn cả và được sử dụng chủ yếu trong quá trình thiết kế số nói chung và thiết kế cho CPLD/FPGA nói riêng. Hiện nay có nhiều ngôn ngữ HDL được sử dụng, tuy nhiên trong phần này chỉ giới thiệu phương pháp thiết kế dùng ngôn ngữ VHDL và giới thiệu những đặc điểm của VHDL khiến nó được trở thành một ngôn ngữ HDL đang được giảng dạy và sử dụng ở nhiều trường đại học trên thế giới. 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 đó, 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 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ử. Phương pháp thiết kế, thử nghiệm, phân tích các hệ thống số sử dụng các ngôn ngữ mô tả phần cứng nổi bật lên với các ưu điểm hơn hẳn và sẽ dần thay thế các phương pháp truyền thống. Sự ra đời của ngôn ngữ mô phỏng phần cứng đã 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 (finite-state-machine) 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. 169
  47. Chương 9: Ngôn ngữ mô tả phần cứng VHDL 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ư FPGA. NỘI DUNG 9.1. GIỚI THIỆU NGÔN NGỮ MÔ TẢ PHẦN CỨNG 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ữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC( Very High Speed Itergrated Circuit) của bộ quốc phòng Mỹ. Mục tiêu của việc phát triển VHDL là có được một ngôn ngữ mô phỏng phần cứng tiêu chuẩn và thống nhất cho phép thử nghiệm các hệ thống số nhanh hơn cũng như cho phép dễ dàng đưa các hệ thống đó vào ứng dụng trong thực tế. Ngôn ngữ VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983. Phiên bản đầu tiên được công bố vào tháng 8-1985. Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn chung. Năm 1987 đã đưa ra tiêu chuẩn về VHDL( tiêu chuẩn IEEE-1076-1987). VHDL được phát triển để giải quyết các khó khăn trong việc phát triển, thay đổi và lập tài liệu cho các hệ thống số. Như ta đã biết, một hệ thống số có rất nhiều tài liệu mô tả. Để có thể vận hành bảo trì sửa chữa một hệ thống ta cần tìm hiểu kỹ lưỡng tài liệu đó. Với một ngôn ngữ mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả trở nên dễ dàng hơn vì bộ tài liệu đó có thể được thực thi để mô phỏng hoạt động của hệ thống. Như thế ta có thể xem xét toàn bộ các phần tử của hệ thống hoạt động trong một mô hình thống nhất. 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 đã kể ra ở trên 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 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ế . 170
  48. Chương 9: Ngôn ngữ mô tả phần cứng 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 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. 9.2. CẤU TRÚC NGÔN NGỮ CỦA VHDL VHDL là ngôn ngữ cho phép mô tả các thiết bị phần cứng số trừu tượng, nó không dựa vào công nghệ thiết bị phần cứng số, phương pháp được sử dụng để thiết kế thiết bị số, mà những khái niệm, mô hình trừu tượng của thiết bị phần cứng số được đưa ra như là nền tảng của ngôn ngữ. Do đó dùng VHDL cho phép mô tả được hầu hết các hệ thống phần cứng số. Các mô hình trừu tượng gồm: - Mô hình hoạt động (a Model of Behavior). - Mô hình thời gian (a Model of Time). - Mô hình cấu trúc (a Model of Structure). Để thực hiện mô tả cho một hệ thống số nào đó cần thực hiện theo các bước như sau: + Phân tích yêu cầu của hệ thống số cần phải thiết kế hoặc cần phải mô tả. + Phân tách hệ thống thành những khối con. + Xác định mô hình mô tả phù hợp cho mỗi khối con hoặc cho cả hệ thống. + Sử dụng ngôn ngữ VHDL để mô tả hệ thống số theo các mô hình đã xác định. Như vậy việc nắm chắc cấu trúc, cú pháp, các mô hình mô tả của ngôn ngữ là rất quan trọng, quyết định chủ yếu đến thành công trong việc mô tả hệ thống số cần thiết kế. VHDL cũng có nhiều điểm giống như một ngôn ngữ lập trình bậc cao, có cấu trúc, có cú pháp riêng, có cách tổ chức chương trình, có từ khóa, có phương pháp biểu diễn số liệu riêng Chú ý: - Trong các đoạn mã mô tả VHDL trong chương các từ khóa đều được in đậm. - Trong VHDL không phân biệt chữ hoa, chữ thường. 171
  49. Chương 9: Ngôn ngữ mô tả phần cứng VHDL 9.2.1 Đối tượng trong VHDL Trong ngôn ngữ VHDL gồm có 3 đối tượng là: tín hiệu - signal, biến - variable, hằng - constant, mỗi đối tượng được khai báo dựa vào từ khóa tương ứng và chúng có mục đích sử dụng như sau: + Tín hiệu – Signal: là đối tượng để biểu diễn đường kết nối các giữa các cổng vào/ra của thực thể, giữa các cổng vào/ra của các khối thành phần phần cứng xuất hiện trong thực thể Chúng là phương tiện truyền dữ liệu động giữa các thành phần của thực thể. Tín hiệu có tính toàn cục rất cao, chúng có thể được khai báo trong package (tín hiệu toàn cục, được sử dụng bởi một số thực thể), khai báo trong thực thể - Entity (tín hiệu nội bộ dùng trong thực thể, có thể được tham chiếu bởi bất kỳ kiến trúc nào của thực thể đó), khai báo trong kiến trúc – Architecture (tín hiệu nội bộ dùng trong kiến trúc, có thể được sử dụng trong bất cứ cấu trúc lệnh nào trong kiến trúc). Các tín hiệu có thể được sử dụng nhưng không được khai báo trong tiến trình – process, trong chương trình con. Vì tiến trình và chương trình con là thành phần cơ sở của mô hình và chúng được coi như các hộp đen. Cú pháp khai báo tín hiệu như sau: Signal tên_tín_hiệu {,tên_tín_hiệu}:kiểu_dữ_liệu [:=giá_trị_khởi_tạo]; Ví dụ: Signal a,b,c: Bit:=’1’; Signal y, reg: std_logic_vector(3 downto 0):=”0000”; + Biến – Variable: là đối tượng cục bộ được sử dụng để chứa các kết quả trung gian. Biến chỉ được khai báo và sử dụng trong process và trong chương trình con. Cú pháp khai báo của biến cũng tương tự như khai báo tín hiệu: variable tên_biến {,tên_biến}: kiểu_dữ_liệu [:=giá_trị_khởi_tạo]; Ví dụ: variable x : Bit:=’1’; variable Q: std_logic_vector(3 downto 0); Nếu không được khởi tạo giá trị ban đầu biến sẽ nhận giá trị khởi tạo ban đầu là giá trị thấp nhất trong các giá trị thuộc miền xác định của kiểu dữ liệu. Tín hiệu cũng có thể chứa dữ liệu nhưng chúng lại không được sử dụng vì những lý do sau: - Việc sử dụng biến hiệu quả hơn vì giá trị của biến được gán ngay lập tức trong process khi tín hiện chỉ được lập kế hoạch để thực hiện và chỉ được cập nhật toàn bộ sau khi kết thúc process. - Biến chiếm ít bộ nhớ hơn trong khi tín hiệu cần nhiều thông tin để có thể lập kế hoạch thực hiện cũng như để chứa các thuộc tính của tín hiệu. - Sử dụng tín hiệu yêu cầu có lệnh wait để thực hiện đồng bộ phép gán tín hiệu với phép lặp thực hiện theo cách sử dụng quen thuộc. + Hằng –constant: là đối tượng hằng được gán cho các giá trị cụ thể của một kiểu khi được tạo ra và không đổi trong toàn bộ quá trình thực hiện. Hằng cũng có tính toàn cục giống như tín hiệu và có thể được khai báo trong package, entity, architecture, proceduce, process Cú pháp khai báo hằng: constant tên_hằng {,tên_hằng}: kiểu_dữ_liệu :=giá_trị_khởi_tạo; Ví dụ: constant GND : std_logic:=’0’; constant PI: real:=3.1414; 172
  50. Chương 9: Ngôn ngữ mô tả phần cứng VHDL Tóm lại: Các đối tượng trong VHDL có mục đích sử dụng, phạm vi sử dụng khác nhau, nhưng chúng có cú pháp khai báo chung như sau: Đối_tượng tên_đối_tượng : kiểu_dữ_liệu {:=giá_trị_khởi_tạo} Các đối tượng khi khai báo phải được xác định kiểu dữ liệu tương ứng. VDHL định nghĩa nhiều kiểu dữ liệu khác nhau để phù hợp với việc mô tả, thiết kế, mô phỏng các hệ thống số khác nhau trong thực tế. 9.2.2 Kiểu dữ liệu trong VHDL Trong VHDL có 4 dạng dữ liệu: • Vô hướng : gồm các dữ liệu có giá trị đơn như bit, boolean, integer, real, physical, character, std_logic và std_ulogic, enumerated (kiểu liệt kê) • Kiểu ghép: các dữ liệu dưới dạng một nhóm các thành phần như mảng, bảng ghi (record). Bit_logic_vector, std_logic_vector và String đều là những dạng dữ liệu ghép đã được định nghĩa sẵn. • 2-D Arrays: các dữ liệu có dạng mảng 2 chiều, được tạo nên từ 1 mảng của một mảng 1 chiều ( hay một bản ghi). • VHDL Subtypes: dạng dữ liệu con do người dùng tự định nghĩa dựa trên những dạng có sẵn. Các kiểu dữ liệu đã được định nghĩa trong gói Standard chứa trong thư viện chuẩn Standard Library của VHDL là: bit, boolean, integer, real, physical, character, std_logic and std_ulogic, Bit_logic_vector, std_logic_vector và String và một số kiểu dữ liệu con. Cú pháp chung định nghĩa kiểu dữ liệu như sau: Type Tên_kiểu is giới_hạn_giá_trị_của_kiểu a. Kiểu vô hướng - Kiểu Bit : Kiểu liệt kê với 2 giá trị ‘0’ và ‘1’. Kiểu Bit đã được định nghĩa như sau: Type Bit is (‘0’, ‘1’); - Kiểu Boolean: Kiểu liệt kê với 2 giá trị false và true. Kiểu Boolean đã được định nghĩa như sau: Type Boolean is (false, true); - Kiểu Integer: Kiểu số nguyên với những giá trị dương hoặc âm, độ lớn mặc định là 32 bit với giới hạn giá trị: từ -2147483647 đến +2147483647. Khi sử dụng có thể giới hạn miền xác định theo giới hạn giảm dần dùng từ khóa downto hoặc tăng dần dùng từ khóa to: signal A : integer range 0 to 7; A số nguyên 3 bit variable B : integer range 15 downto 0; B số nguyên 4 bit signal B : integer range 15 downto -15; B số nguyên 5 bit Các cách biểu diễn số nguyên dạng thập phân: + digit[underline]digit, ví dụ : 0, 1, 123_456_789 , -123_5678 + digit(E)digit, ví dụ: 987E6 (=987.106) Các cách biểu diễn dưới dạng cơ số xác định: 173
  51. Chương 9: Ngôn ngữ mô tả phần cứng VHDL + base#based_integer#[exponent], ví dụ: 2#1100_0100#, 16#C4#, 4#301#E1, (=196) - Kiểu Real: Kiểu số thực có giới hạn từ -1.0E+38 đến 1.0E+38, khác với kiểu integer kiểu số thực khi sử dụng thường được định nghĩa thành kiểu dữ liệu riêng và có giới hạn miền xác định: signal a: Real:=-123E-4; type CAPACITY is range -25.0 to 25.0 ; signal Sig_1 : CAPACITY := 3.0 ; type PROBABILITY is range 1.0 downto 0.0; constant P : PROBABILITY := 0.5 ; Các cách biểu diễn số thực: + Biểu diễn dưới dạng thập phân: integer[.integer][exponent], ví dụ: 0.0, 0.5, 1.1234_5678, 12.4E-9 + Biểu diễn dưới dạng cơ số xác định: base#based_integer[.based_integer ]#[exponent] Ví dụ: 2#1.111_1111_111#E+11, 16#F.FF#E2 (=4095.0) - Kiểu Character: Kiểu kiểu ký tự, liệt kê với miền xác định là tập hợp các ký tự ASCII. Biểu diễn của giá trị Character: ‘A’, ‘a’, ‘*’, ‘ ‘, NUL, ESC - Kiểu Vật lý – Physical: được sử dụng để biểu diễn các đại lượng vật lý như khoảng cách, điện trở, dòng điện, thời gian Kiểu vật lý cung cấp đơn vi cơ bản và các đơn vị kế tiếp được định nghịa theo đơn vị cơ bản, đơn vị nhỏ nhất có thể biểu diễn được là đơn vị cơ bản. Trong thực việc chuẩn Time (kiểu dữ liệu thời gian) là kiểu vật lý duy nhất đã được định nghĩa. type Time is range units Ví dụ sử dụng: fs; Đơn vị cơ bản constant Tpd : time := 3ns ; ps = 1000 fs; ns = 1000 ps; Z <= A after Tpd ; us = 1000 ns; ms = 1000 us; sec = 1000 ms; min = 60 sec; hr = 60 min; End Units; - Kiểu std_logic và std_ulogic: kiểu dữ liệu logic nhiều mức đã được định nghĩa trong gói std_logic_1164, so với kiểu Bit thì chúng có thể mô tả chính xác và chi tiết hơn cho các phần cứng số, chúng còn xác định được cường độ khác nhau của các tín hiệu. 174
  52. Chương 9: Ngôn ngữ mô tả phần cứng VHDL type std_ulogic is type std_logic is ( ‘U’, Uninitialize ( ‘U’, Uninitialize X’, Forcing Unknown X’, Forcing Unknown ‘0’, Forcing Zero ‘0’, Forcing Zero ‘1’, Forcing One ‘1’, Forcing One ‘Z’, High Impedance ‘Z’, High Impedance ‘W’, Weak Unknown ‘W’, Weak Unknown ‘L’, Weak Zero ‘L’, Weak Zero ‘H’, Weak One ‘H’, Weak One ‘-‘ Don’t Care ‘-‘ Don’t Care ) ; ) ; Hai kiểu dữ liệu std_logic và std_ulogic tương tự nhau, chúng chỉ khác nhau ở chỗ là kiểu std_ulogic không có hàm phân dải (unresolved) – hàm quyết định giá trị tín hiệu, do đó sẽ có lỗi khi các tín hiệu kiểu std_ulogic được nối chung vào 1 điểm. Thư viện cũng cung cấp hàm phát hiện lỗi này của các tín hiệu kiểu std_ulogic. signal A,B,C,Res_Out : std_logic ; signal Out_1 : std_ulogic ; Out_1 <= A ; Res_Out <= A; A Out_1 <= B ; Res_Out <= B; Out_1 <= C ; Res_Out <= C; A B Out_1 B Res_Out C Có lỗi C Thực hiện được (Ký hiệu “<=” dùng ở trên là lệnh gán tín hiệu, lệnh gán tín hiệu thực hiện được với 2 dữ liệu cùng kiểu, cùng độ lớn, giá trị của tín hiệu bên phải sẽ được gán cho tín hiệu bên trái). - Kiểu dữ liệu liệt kê tự định nghĩa: Kiểu dữ liệu liệt kê, do người sử dụng tự định nghĩa, cho phép mô tả rất sáng sủa, và linh hoạt cho các mô hình phần cứng số với mức độ trừu tượng cao. Kiểu dữ liệu này dùng nhiều mô tả đồ hình trạng thái, các hệ thống phức tạp Ví dụ: type My_State is( RST, LOAD, FETCH, STOR, SHIFT) ; . . . signal STATE, NEXT_STATE : My_State ; b. Kiểu dữ liệu ghép Tương tự các ngôn ngữ lập trình, VHDL cũng có các kiểu dữ liệu ghép là nhóm các phần tử dữ liệu theo dạng mảng (array) hoặc bảng ghi (record). + Mảng – Array: 175
  53. Chương 9: Ngôn ngữ mô tả phần cứng VHDL Mảng là nhóm nhiều phần tử có cùng kiểu dữ liệu với nhau thành đối tượng duy nhất. Mỗi phần tử của mảng có thể được truy cập bằng một hoặc nhiều chỉ số của mảng. Cú pháp định nghĩa kiểu dữ liệu mảng như sau: Type tên_mảng is array (khoảng _của _chỉ số) of kiểu_của_phần_tử; Ví dụ một số cách khai báo và sử dụng dữ liệu mảng: type WORD is array (3 downto 0) of std_logic ; signal B_bus : WORD ; type DATA is array (3 downto 0) of integer range 0 to 9 ; signal C_bus : DATA ; Các kiểu dữ liệu mảng đã được định nghĩa trong thư viện chuẩn của VHDL là: Bit_logic_vector (mảng dữ liệu kiểu Bit), std_logic_vector (mảng dữ liệu kiểu std_logic) và String (mảng dữ liệu kiểu Chacracter). Một số ví dụ sử dụng các kiểu dữ liệu này như sau: signal My_BusA, My_BusB: bit_vector (3 downto 0); signal My_BusC : bit_vector (0 to 3) ; signal Data_Word : std_logic_vector (11 downto 0); variable Warning2: string(1 to 30):= “ Unstable, Aborting Now” ; constant Warning3: string(1 to 20):= “ Entering FSM State2”; Một số phép toán thao tác với phần tử mảng: - Phép gán cho mảng: 2 mảng phải cùng kiểu, cùng độ lớn, phép gán sẽ thực hiện gán theo từng phần tử theo thứ tự từ trái sang phải: My_BusB <= My_BusA ; My_BusC <= My_BusA ; 3 2 1 0 3 2 1 0 My_BusA My_BusA My_BusB My_BusB 3 2 1 0 0 2 ; Data_Word <= ”101001101111” ; Data_Word <= X”A6F”; Data_Word <= O”5157”; Data_Word <= B”1010_0110_1111” ; Cách biểu diễn số liệu bit_vector và std_logic_vector: B|O|X ”giá_trị” (dùng dấu nháy kép). Trong đó B : Binary -Kiểu nhị phân, O: Octal - kiểu bát phân, X: hexadecimal. X”1AF”=B”0001_1010_1111”= B”000_110_101_111”=O”0657” - Phép gộp ( ): cho phép nhóm cả dữ liệu vô hướng và dữ liệu mảng để thuận tiện cho các phép gán cho mảng: 176
  54. Chương 9: Ngôn ngữ mô tả phần cứng VHDL signal H_BYTE, L_BYTE: std_logic_vector ( 0 to 7); signal Q_Out : std_logic_vector (31 downto 0); signal A, B, C, D : std_logic; signal WORD : std_logic_vector (3 downto 0); (A,B,C,D) ‘1’, 3 => D, others => ‘0’ ) ; Q_Out ‘0’) ; WORD ’1’, 2 to 5 => ‘0’ ); L_Byte ’1’, 1 to 2 => ‘0’, 4 to 7 => ‘1’); Chú ý: “others” có thể được sử dụng khi gán mặc định, nó có ý nghĩa là các tất cả các phần tử còn lại được gán bằng một giá trị nào đó) . + Bảng ghi – Record: Bảng ghi là nhóm nhiều phần tử có kiểu dữ liệu khác nhau thành đối tượng duy nhất. - Mỗi phần tử của bản ghi được truy nhập tới theo tên trường. - Các phần tử của bản ghi có thể nhận mọi kiểu của ngôn ngữ VHDL kể cả mảng và bảng ghi. Ví dụ định nghĩa kiểu dữ liệu bảng ghi như sau: type OPCODE is record PARITY : bit; ADDRESS : std_logic_vector ( 0 to 3 ); DATA_BYTE : std_logic_vector ( 7 downto 0 ); NUM_VALUE : integer range 0 to 6; STOP_BITS : bit_vector (1 downto 0); end record ; . . . signal TX_PACKET, RX_PACKET : OPCODE; ADDRESS DATA BYTE NUM VALUE STOP BIT PARITY ; Cách truy nhập và gán dữ liệu cho các trường của bản ghi: Các phần tử của bản ghi được truy nhập theo tên bản ghi và tên trường, 2 thành phần này được ngăn cách bởi dấu ‘.’ TX_PACKET <= ( ‘1’,”0011”,”11101010”,5,”10” ) ; TX_PACKET.ADDRESS <= (“0011”); TX_PACKET <= RX_PACKET; 177