1. THÔNG BÁO TUYỂN ADMIN DIỄN ĐÀN 2013
    Tìm kiếm nhà trọ - Ở ghép
    THÔNG BÁO BÁN ÁO SPKT.NET CHO THÀNH VIÊN DIỄN ĐÀN


    HÃY TÌM KIẾM Ở ĐÂY TRƯỚC KHI ĐẶT CÂU HỎI
    {xen:phrase loading}

THIẾT BỊ LOGIC LẬP TRÌNH ĐƯỢC PLDs – Programmable Logic Devices

Thảo luận trong 'PLC - Biến tần - Truyền thông CN' bắt đầu bởi webdien.com, 16 Tháng tư 2010.

  1. webdien.com New Member

    Số bài viết: 63
    Đã được thích: 8
    Điểm thành tích: 0
    Bất cứ các thiết kế logic số nào cũng có thể được thực hiện nhờ PLD (thiết bị logic lập trình được).

    Nếu trước đây bạn đã từng bắt đầu thiết kế một mạch số của mình bằng cách:
    • Sử dụng bảng sự thật hay các sơ đồ trạng thái
    • Sử dụng các hàm AND, OR, NOT
    • Chọn các họ IC 74xx và 45xx, v.v…
    thì bây giờ bạn đã có thể thiết kế sử dụng các PLD cũng không khó khăn lắm.

    Vậy làm thế nào để thiết kế một bộ vi xử lý cho một hệ thống với bộ nhớ và các thiết bị I/O, thiết kế một mạch giao tiếp bus, sử dụng các máy trạng thái để điều khiển nhiều tín hiệu ngõ ra, sử dụng bộ đếm để chia nhỏ tần số xung clock, biến đổi song song sang nối tiếp và ngược lại và quan trọng là làm chủ được IC số mà mình mong muốn không còn phải lo tìm trên thị trường eo hẹp của Việt nam xem có IC đó không, v.v…. Tất cả điều này đều có thể thực hiện được bằng PLD.

    Đầu tiên ta tìm hiểu PLD là gì? PLD là tên gọi tổng quát của một IC số mà người ta có thể lập trình được nó để thực hiện các hàm logic khác nhau. Nó là một chip chứa các cấu trúc mạch có qui luật cho phép người thiết kế tạo các ứng dụng cụ thể. Cấu trúc mạch trong PLD thông thường là một dãy các ô nhớ đồng dạng mà có thể lập trình từng ô nhớ được (các dãy OR hoặc dãy AND hoặc cả hai). Các loại PLD thông dụng là: PLA, PAL, LCA, EPLD, PEEL, GAL, v.v…

    [IMG]
    Hình 1. Một đoạn các ô nhớ với dãy AND, OR và cấu trúc ngõ ra của PLD


    Và đây là một trong số những lý do quan trọng để sử dụng PLD

    Tăng khả năng tích hợp. Bạn có thể giảm khối lượng về mạch thiết kế trong khi vẫn có thể tăng chức năng cho mạch của bạn
    Công suất thấp. CMOS và một số ít hơn các mạch kết hợp sẽ làm giảm đáng kể công suất nguồn cung cấp
    Tăng độ tin cậy. Nguồn cung cấp thấp và việc giảm tối đa các mạch liên kết ở ngoài làm cho việc truyền giữa các khối đáng tin cậy hơn
    Giá thành thấp.
    Dễ sử dụng. Dù tin hay không, thì sau khi bạn trải qua thời gian ban đầu nghiên cứu về PLD, bạn sẽ thấy PLD rất dễ sử dụng hơn các hàm logic riêng rẽ
    Dễ dàng thay đổi. Khi bạn cần có sự thay đổi trong thiết kế của bạn, bạn không cần phải thêm thắt các “dây nối”, tất cả là thay đổi bên trong của PLD và bạn có thể thực hiện các thay đổi đó một cách nhanh chóng.

    Quá trình thiết kế PLD như sau
    Hình dưới đây mô tả một quá trình thiết kế PLD. Sau khi bạn làm chủ quá trình này. Bạn hoàn toàn có thể ứng dụng PLD vào các thiết kế của bạn. Nào, hãy bắt đầu nhé.

    [IMG]
    Hình 2. Quá trình thiết kế PLD


    Công việc đầu tiên là bạn cần có một máy tính với một trình soạn thảo. Nếu bạn có phần mềm và một trình soạn thảo mạch (schematic editor) bạn có thể đưa thiết kế của bạn vào bằng cách sử dụng các khối logic quen thuộc. Còn nếu bạn chỉ có trình soạn thảo text thông thường, bạn có thể tạo gián tiếp các hàm logic bằng ngôn ngữ lập trình thông dụng cho các PLD như ABEL dưới dạng text file (điều đương nhiên là bạn phải có sơ đồ bên trong của các IC này, tùy vào các dạng ngõ ra mà bạn có thể sẽ phải thay đổi một chút ở trong chương trình của mình, các sơ đồ này bạn có thể download dễ dàng từ các website điện tử như www.altera.com, www.chipcenter.com, www.atmel.com, www.pc circuit.com, bạn có thể dễ dàng tìm các website khác bằng cách đưa vào ô search của các trình duyệt web từ ‘programmable logic device’ và bạn sẽ có cả trăm website điện tử về vấn đề này).
    Cấu trúc của một chương trình ABEL như sau
    module module name
    title string
    deviceID device deviceType;
    pin declarations
    other declarations

    equations
    equations
    test_vectors
    end
    module name


    Công việc kế là mở một trình biên dịch (compiler) logic đối với thiết kế của bạn. Trình biên dịch sẽ biến thiết kế của bạn thành sơ đồ đốt các cầu chì bên trong IC. Mặc dù hầu hết các PLD được lập trình bằng biểu thức dưới dạng tích chuẩn (minterm), các ngôn ngữ như ABEL cho phép các phương trình của PLD có thể được viết dưới hầu hết các dạng format. Trình biên dịch sẽ tự động cực tiểu hóa các phương trình sao cho phù hợp với cấu trúc của PLD. Sau đó phần mô phỏng sẽ kiểm tra lại các vector kiểm tra mà bạn đã đưa vào trong phần soạn thảo, so sánh với phần đã biên dịch.

    Sau khi kết thúc, trình biên dịch sẽ tạo ra một file JEDEC, file này là một định dạng chuẩn đối với các thiết bị phần cứng để nạp vào IC. Bạn chỉ cần cầm file này ra nơi có thiết bị nạp PLD (chợ Nhật Tảo chẳng hạn) và thực hiện công việc nạp vào IC. Phải chắc chắn rằng chương trình bạn nạp vào IC và thiết bị phần cứng là tương thích nhau. Các phần cứng sẽ thực hiện kiểm tra luôn cho bạn nếu bạn đặt thêm các vector kiểm tra vào trong file JEDEC.

    Cuối cùng, bạn đưa IC sau khi đã được nạp chương trình vào hệ thống của bạn, kiểm tra lại, nếu phát hiện sai, bạn có thể mở lại trình soạn thảo và thực hiện những thay đổi cần thiết. Lập lại cho đến khi nào thành công, và bạn sẽ cảm thấy sử dụng PLD là rất dễ dàng

    Một ví dụ đơn giản về thiết kế bằng ABEL
    Thiết kế sau đây là một ví dụ đơn giản sử dụng ABEL để thiết lập file mô tả logic (dùng IC PAL16L8) thực hiện việc giải mã 3 sang 8

    [IMG]

    Đoạn chương trình viết bằng ngôn ngữ ABEL (bạn có thể đặt tên file là Decoder.abl)

    Module Decoder_3_to_8
    title ‘MACH GIAI MA 3 SANG 8’
    ABINDEC device ‘P16L8’;

    “Input pins
    /CS, /RD, A0, A1, A2 pin 1, 2, 3, 4, 5;

    “Output pins
    /Y0, /Y1, /Y2, /Y3 pin 19, 18, 17, 16;
    /Y4, /Y5, /Y6, /Y7 pin 15, 14, 13, 12;

    equations
    Y0 = CS * RD * (/A2 * /A1 * /A0);
    Y1 = CS * RD * (/A2 * /A1 * A0);
    Y2 = CS * RD * (/A2 * A1 * /A0);
    Y3 = CS * RD * (/A2 * A1 * A0);
    Y4 = CS * RD * (A2 * /A1 * /A0);
    Y5 = CS * RD * (A2 * /A1 * A0);
    Y6 = CS * RD * (A2 * A1 * /A0);
    Y7 = CS * RD * (A2 * A1 * A0);

    test_vectors

    ([/CS,/RD,A2,A1,A0] -> [/Y0,/Y1,/Y2,/Y3,/Y4,/Y5,/Y6,/Y7]);
    [ 1, 0,.X.,.X.,.X.]-> [ 1, 1, 1, 1, 1, 1, 1, 1] ;
    [ 0, 1,.X.,.X.,.X.]-> [ 1, 1, 1, 1, 1, 1, 1, 1] ;
    [ 1, 1, 0, 0, 0] -> [ 0, 1, 1, 1, 1, 1, 1, 1] ;
    [ 1, 1, 0, 0, 1] -> [ 1, 0, 1, 1, 1, 1, 1, 1] ;
    [ 1, 1, 0, 1, 0] -> [ 1, 1, 0, 1, 1, 1, 1, 1] ;
    [ 1, 1, 0, 1, 1] -> [ 1, 1, 1, 0, 1, 1, 1, 1] ;
    [ 1, 1, 1, 0, 0] -> [ 1, 1, 1, 1, 0, 1, 1, 1] ;
    [ 1, 1, 1, 0, 1] -> [ 1, 1, 1, 1, 1, 0, 1, 1] ;
    [ 1, 1, 1, 1, 0] -> [ 1, 1, 1, 1, 1, 1, 0, 1] ;
    [ 1, 1, 1, 1, 1] -> [ 1, 1, 1, 1, 1, 1, 1, 0] ;

    END


    Cuối cùng chúc bạn thành công với những thiết kế mới của bạn.
    [FONT=verdana, arial, tahoma, ms san seif]
    ThS. Nguyễn Trọng Hải
    Nguồn : http://webdien.com/d/showthread.php?t=4091
    [/FONT]

Chia sẻ trang này