3.2. Phần mềm thiết kế ISE của Xilinx
3.2.5. Lập trình mô tả trạng thái
Đối với thiết kế đèn hiệu giao thông, bộ đếm đóng vai trò như một bộ định thời để xác định việc chuyển trạng thái của hệ thống. Hệ thống sẽ chạy qua 4 trạng thái, mỗi trạng thái điều khiển một tổ hợp của 3 đèn: trạng thái 1 - đèn đỏ; trạng thái 2 - đèn đỏ và đèn vàng; trạng thái 3 - đèn xanh và trạng thái 4 - đèn vàng.
Để tiến hành mô tả trạng thái ta làm như sau:
1. Lựa chọn New Source từ project menu
2. Chọn State Diagram và cho nó một cái tên “Stat_mac”
3. Nhấn next và sau đó là Finish
Hình 3.24: Tạo file nguồn mô tả trạng thái
Cửa sổ mô tả trạng thái sẽ xuất hiện.
4. Mở State Machine Wizard bằng cách nhấn lên nút trong thanh công cụ chính State Machine Wizard sẽ xuất hiện.
Hình 3.25: Thiết kế mô tả trạng thái sử dùng State Machine Wizard 5. Thiết lập số trạng thái là 4 và nhấn nút Next.
Hình 3.26: Thiết lập số trạng thái của hệ thống
1. Bạn sẽ thấy một hộp thoại xuất hiện để lựa chọn Reset Mode. Kiểm tra chắc chắn Synchronous đã được lựa chọn, sau đó nhấn NEXT để tạo ra một mô tả trạng thái đồng bộ
2. Tiếp theo bạn sẽ thấy hộp thoại Setup Transitions. Gõ vào “TIMER”
trong trường Next.
3. Nhấn lên nút Finish và dán mô tả trạng thái lên trang bằng cách nhấn một chỗ bất kỳ trên trang đó.
Hình 3.27: Cài đặt các bước chuyển trạng thái
Nhấn đúp lên Reset State 0 (oval màu vàng). Đổi tên trạng thái thành “Red”
Hình 3.28: Sửa trạng thái
1. Nhấn vào nút Output Wizard. Thiết kế này sẽ có 3 đầu ra được đặt tên là RD,AMB và GRN
2. Trong trường DOUT gõ vào “RD” để khai báo một đầu ra. Thiết lập cho RD một hằng số 1 với một đầu ra được đăng ký như hình vẽ.
3. nhấn OK 2 lần ở hộp thoại Edit State 4. Tương tự soạn thảo các trạng thái khác.
Hình 3.29: Xác định giá trị đầu ra
1. Đổi tên trạng thái 1 thành “REDAMB” và sử dụng Output Wizard để thiết lập RD=1, và một đầu ra mới AMB bằng “1” với đầu ra được đăng ký. Bạn sẽ phải lặp lại hai lần qua Output Wizard để tạo ra 2 đầu ra
2. Đổi tên trạng thái 2 thành “GREEN” và sử dụng Output Wizard để tạo ra 1 đầu ra mới GRN bằng “1” với đầu ra được đăng ký
3. Đổi tên trạng thái 3 thành “AMBER” và sử dụng Output Wizard để thiết lập AMB=1.
Mô tả trạng thái sẽ có dạng như hình vẽ sau
Hình 3.30: Lưu đồ mô tả trạng thái hệ thống
1. Nhấn lên đường nối giữa trạng thái “RED” và trạng thái “REDAMB”
2. hộp thoại Edit Condition sẽ xuất hiện. Trong cửa sổ Edit Condition, thiết lập một chuyển đổi xảy ra khi bộ định thời gian có trạng thái là “1111”
bằng cách đặt cho trường Condition TIMER =“1111”. (đừng quên dấu ngoặc đúp “”, đây là cú pháp của ngôn ngữ VHDL)
3. Lặp lại cho các chuyển đổi khác
• Chuyển REDAMB tới GREEN, TIMER = “0100”
• Chuyển GREEN tới AMBER, TIMER = “0011”
• Chuyển AMBER tới RED, TIMER = “0000”
Hình 3.31: Sửa đổi điều kiện trạng thái
Như vậy đèn hiệu giao thông đã hoàn thành được các trạng thái RED, REDAMB, GREEN, AMBER qua mỗi ba chu kỳ của bộ đếm
1. Cuối cùng khai báo vector Timer bằng cách nhấn lên nút nằm bên phía tay trái của thanh công cụ
2. Thả dấu nhắc lên trang, nhấn đúp lên nó và đưa vào tên “TIMER” với độ dài là 4 bít
3. Nhấn OK.
Hình 3.32: Sửa đổi vector
Hình 3.33: Thiết kế mô tả trạng thái hoàn chỉnh 1. Nhấn lên Generate HDL trên thanh công cụ
2. Cửa sổ hiển thị kết quả “Compiled Perfectly”. Đóng hộp thoại và cửa sổ HDL Browser
3. Khi bạn nhấn nút close một VHDL được liệt kê ra cho State Machine sẽ mở trong StateCAD HDL Browser
4. Lưu trữ và đóng StateCAD. Sử dụng menu File ’! Save and File ’!
Exit.
Hình 3.34: Kết quả biên dịch từ lưu đồ trạng thái sang dạng mã HDL
Hình 3.35: Mã HDL được biên dịch từ lư đồ trạng thái
Sơ đồ trạng thái sẽ được thêm vào trên đầu của cửa sổ Sources. (Nhấn đúp lên file này sẽ mở ra sơ đồ trạng thái trong StateCAD)