- 1.3 Bản quyền sử dụng
5.1. Sơ lược về VHDL
- VHDL là một tiêu chuẩn IEEE về ngôn ngữ mô tả phần cứng được dùng trong thiết kế mạch điện tử để mô tả, mô phỏng chip và các hệ thống ưu tiên.
- Bất cứ mạch số nào trong TINA đều có thể chuyển đổi tự động sang mã VHDL và được phân tích như một dạng VHDL.
- Có thể phân tích trên phạm vi rộng giá trị của phần cứng trong VHDL và xác định các phần tử mạch số và phần cứng trong VHDL.
- Ưu điểm lớn nhất của VHDL là nó có thể được thực hiện một cách tự động trong linh kiện logic có thể lập trình được như FPGAs và CPLDs.
- VHDL có thể mô tả một hệ thống số dưới các dạng: behavioral(hành vi của hệ theo các tác nhân ngõ vào), data flow(các biểu thức logic), structure(kết nối các cổng logic).
Ví dụ cho 3 kiểu mô tả trên cho bộ cộng.
- VHDL được thiết kế theo kiểu Top-down. - VHDL được thiết kế độc lập về công nghệ.
- Dưới dạng đơn giản nhất, VHDL với công dụng mô tả một hệ thống phần cứng sẽ bao gồm một giao diện và một kiến trúc. Giao diện của hợp phần(component/module) bắt đầu với từ entity. Phần kiên trúc với từ architecture mô tả chức năng của hợp phần.
5.2. Mô phỏng ngôn ngữVHDL
TINA có thể tạo ra mã VHDL tổng hợp với file UCF tương ứng nếu hộp đánh dấu mã tổng hợp phát được đặt trong Analysis/Options menu.
- Lưu các file VHD và UCF tạo ra bằng lệnh “Create VDH & UCF File” trong T&M menu.
- Đọc các file với Webpack tự do của Xilinx và tạo ra dòng bit mô tả sự cài đặt, sau đó tải lên các chip Xilinx FPGA.
- Tìm mô tả chi tiết của các chủ đề trong Advanced Topics user manual.
Trước khi thiết kế VHDL thực tế, cũng như chọn các linh kiện hoặc FPGA, cần phải kiểm tra nó trên mô phỏng. Điều này tương ứng với lệnh Analysis/Digital Timing Analysis trong mô hình số.
Để làm việc với VHDL, dùng lệnh Digital VHDL Simulation từ menu Analysis. Hãy kiểm tra một vài dạng của mô phỏng VHDL.
Đây là mạch nối của hai bộ cộng half-add VHDL(macros) và một cổng OR.
Nếu bạn kích đúp chuột trên mỗi bộ cộng Half-add và sau đó nhấn nút Enter Macro sẽ xuất hiện hình sau:
Nhớ rằng tính chất mã VHDL của bộ cộng half-add là:
Ban đầu có vẻ là một bit, nhưng thực tế nó là một khối dịch chuyển mã của bộ cộng, gồm có bốn cổng.
Các nút N5 và N6 được chỉ trong hình dưới, có tính chất sau:
Và vì vậy:
Bạn có thể chọn số lẻ cho mã VHDL trong hộp, S được tính với N5 và N6 chẵn trước khi N5 và N6 được tính. Điều này hợp lệ, tuy nhiên vì VHDL là ngôn ngữ không trình tự và các dòng trên không có nghĩa thi hành.
Thời gian trễ xuất hiện do bốn cổng logic riêng biệt, nhưng chúng được triệt tiêu bởi bộ tổng hợp nếu mạch được thực hiện trên chip FPGA.
Đặc trưng nhất của ngôn ngữ VHDL của TINA là bạn không chỉ có thể xem mã VHDL của mỗi thành phần, mà bạn còn có thể sửa và chạy chúng ngay lập tức. Chúng ta sẽ thay thế 4 dòng:
bằng 2 dòng đơn giản hơn:
Điều này dễ hiểu hơn. Thực tế, nếu một trong hai đầu vào A hoặc B là đúng, thì tổng S là đúng, trong khi cả hai cùng đúng thì S là sai. (A xor B),nhưng trường hợp này bit Carry là đúng. (A and B).
Bây giờ đóng cửa sổ edit bằng cách nhấn trên thanh công cụ Schematic Editor, chọn Digital VHDL Simulation từ Analysis menu, và nhấn OK. Biểu đồ được vẽ sẽ được thực hiện đồng nhất.
5.3. Các mạch VHDL
Đặc điểm của TINA là bạn không chỉ có thể kiểm tra mà còn điều chỉnh các mạch VHDL. Xét ví dụ example Calculator_ex.TSC trong danh mục TINA’s
Đây là mạch tính toán đặc biệt điều khiển bởi bộ phím Opcode. Operation codes 1, 2, 3 và 4 thực hiện hệ thống 4 hàm toán học, đầy đủ với +,-,/,* số học. Các phép toán khác sẽ được thêm vào thông qua mã bổ sung VHDL bên trong Control Unit.Trước tiên, nhấn nút , khi Opcode là 1, bạn sẽ thấy 4+2=6 trên màn hình. Hãy mở các Opcode khác với những cài đặt khác nhau trên Keypad1 và Keypad2.
Bây giờ thực thi các công việc để gán vào Opcode 5.
Kích đúp chuột vào hộp điều khiển và nhấn Enter Macro. Mã VHDL của các thành phần sẽ xuất hiện:
Các tính toán thực tế được tạo ra trong đoạn CASE ở phần cuối của mã VHDL. Sửa đổi lại mã giống như sau:
Đóng cửa sổ VHDL Editor và nhấn nút . Đặt số 5 ở bộ phím Opcode và bạn sẽ thấy giá trị trung bình của Keypad1 và Keypad2 trên màn hình.
5.4. Tạo một macro VHDL từ một file .VHD
Bạn có thể tạo ra một macro VHDL từ bất cứ file .vhd bao gồm một bản thể(giao diện đến thế giới bên ngoài) với kiến trúc của nó(mô tả của phần cứng). Các cổng khai báo trong bản thể sẽ tự động hiện ra trong macro. Theo mặc định, các cổng vào của bản thể sẽ hiện ra bên trái của macro tạo ra, các cổng ra của bản thể sẽ hiện ra bên phải, nhưng theo soạn thảo khởi động macro bạn có thể thay đổi bố cục này.
Ví dụ:
trong trường hợp này, cổng A,B hiện ra bên trái, cổng S,C hiện ra bên phải. Để hiểu một macro được tạo ra như thế nào:
1. Chọn Tools/New Macro Wizard…
2. Kiểm tra “Generate VHDL component”, không kiểm tra “Current Circuit.” 3. Gõ tên cho macro mới.
4. Kích vào nút ở dòng content, chọn file VHDL và chuyển đến
EXAMPLES/VHDL trong danh mục chương trình TINA. Bạn sẽ thấy file half_adder.vhd trong hộp thoại mở. Chọn file này và nhấn Open.
5. Bây giờ hộp thoại “New Macro Wizard”sẽ hiện ra như sau:
6.Nhấn OK để lưu macro, và lưu vào trong thư mục thư viện macro mặc định.
Để thấy nội dung của macro, kích đôi vào nó và nhấn nút Enter Macro trên hộp thoại property. Nội dung VHDL của macro sẽ được hiển thị:
Để kiểm tra mới tạo trong mode hỗ trợ VHDL của TINA.
Để làm điều này, đặt hai bộ chuyển mạch số High-Low từ thanh công cụ Switches, một trong chúng của đầu vào A,B, và hai bộ chỉ báo logic từ thanh công cụ Meters. Bây giờ chọn mode hỗ trợ VHDL với nút hoặc từ menu Interactive và nhấn nút . Các mức logic của điểm nút sẽ hiện ra, đỏ cho mức cao và xanh cho mức thấp. Bộ chỉ báo logic cũng chỉ mức logic của đầu ra trong Red square cho mức cao và empty square cho mức thấp.
5.7. Thay đổi bố cục chân của macro VHDL.
Để thay đổi bố cục chân, bạn nên thêm vào một header cho macro VHDL. Cách dễ nhất để làm điều này là mở macro tự động và thêm header vào nó. Ví dụ: thêm header vào trước một ví dụ là:
Bố cục được xác định bởi dòng:
các cổng trước dấu chấm phẩy (;) đầu được đặt bên trái, phần còn lại đặt bên phải của hộp macro.
Nếu bạn thay đổi dòng ports thành:
và giữ nguyên phần cũ, chúng ta sẽ co file sau(bạn có thể tai nó từ EXAMPLE/VHDL/half_add31.vhd.)
Đổi thành một macro mới tên là Half_adder_VHDL31.TSM và sau đó chèn nó vào lại chúng ta sẽ thấy bản sơ đồ chân được sửa lại:
CHƯƠNG 6: MÔ PHỎNG VI ĐIỀU KHIỂN VỚI TINA
Bạn có biết ngày nay vi điều khiển được ứng dụng rất nhiều trong cuộc sống
Bạn là nhà thiết kế mới vào nghề hay nhà thiết kế chuyên nghiệp.Khi bạn muốn thử một mạch mới bạn sẽ làm gì? Câu trả lời thật đơn giản là bạn phải tìm một phần mềm mô phỏng.
Nhưng sẽ là phần mềm nào?Trong rất nhiều phần mềm?
Câu trả lới cho những câu hỏi trên là TINA pro 7.Nó hỗ trợ nhiều loại vi điều khiển như PIC,AVR,…
Khi kiểm tra mạch với chương trình,nó giúp bạn quan sát được mạch mình thiết kế có hoạt động như yêu cầu hay k?Nó còn giúp mình thử nghiệm chương trình,phát triển chương trình là điều quan trọng nhất đối với vi điều khiển.
Do phần trước đã giới thiệu cách lấy vi điều khiển do đó phần này chỉ tập trung vào cách nạp chương trình cho vi điều khiển,chọn chương trình,sửa lỗi chương trình.
Trong bất cứ sự kiện nào,bạn có thể thấy,thay đổi,sửa lỗi chương trình đươc thực hiện trong lúc chạy chương trình. Trong bất cứ trường hợp nào bộ xử lí hỗ trợ,và tất nhiên bạn có thể tạo và chạy mã chương trình của riêng bạn.
Ở đây có hai con đường với điều kiện là chương trình cho vi điều khiển ở trong TINA.Bạn có thể dùng mã nhị phân và gỡ rối file được tạo bởi bất cứ chương trình biên dịch chuẩn nào (e.g,MP LAB for PICs), hoặc bạn có thể nạp mã assembly đúng của bạn chạy và gỡ rối ngay khi trong lúc TINA dùng nó được cài đặt sẵn trong assembler- debugger.
Để nạp mã vào trong MCU,double click lên trên biểu tượng của vi điều khiển (schematic symbol). Sẽ xuất hiện một hộp thoại sau đây
Bạn có thể lựa chọn HEX / LIST như sau
Để kích hoạt chương trình gỡ rối bạn làm như sau:
Lựa chọn file ASM Soạn thảo với mã ASM
Chọn dùng file ASM
Chọn file HEX/LST
Tạo file ASM mới
Chọn file nhi phân(HEX)
Sẽ xuất hiện hộp thoại “Analysis Options”
Mở hộp thoại Analysis Options
Khi bạn nhấn thì chương trình gỡ rối sẽ chạy đồng thời với chương trình làm việc của vi điều khiển.hộp thoại sau:
Xóa và tạo chương trình gỡ rối mới.Khi bạn gõ dòng lệnh vào,chương trình tự động biên dịch,gỡ rối và chạy với mã mới.
Lưu trữ mã hiện thời vào trong TINA TSC file.Chú ý bạn có thể sửa mã ngay trong chương trình gỡ rối.Sau sự hiệu chỉnh,nó tự động biên tập lại.
Lưu trữ theo ASM file (mã nguồn)
Lưu trữ có thể thực hiện được file nhị phân HEX của mã MCU
Lưu trữ kiểu LST gỡ rối của MCU
Lệnh thay đổi điểm ngắt.Thiết lập hay tháo bỏ điểm ngắt trong lựa chọn dòng. Click bật dòng ở đâu mà bạn muốn đặt hoặc tháo điểm ngắt trước khi click icon.
Chạy mã trong chương trình gỡ lỗi liên tục.Dòng hiện tại thi hành sẽ tô sáng hoặc mã bị cuộn tại dòng hiện tại được thi hành.
Dò theo .Thực hiện mã theo từng bước một.Mỗi một lần bạn nhấn nút bấm mỗi lệnh của chương trình sẽ được thưc thi.
Dừng, tạm dừng chương trình thi hành
Bạn tìm mà chỉ thấy PIC mà không có các vi điều khiển khác.Do đây là bạn Demo do đó chúng ta không thể bổ sung vi điều khiển khác vào.Nhưng có một cách giúp bạn khác phục được tình trạng trên tuy nhiên số linh kiện đươc bổ sung là không nhiều.
Đợi trong giây lát để chương trình nạp thực hiện.Sau đó kiểm tra lại bạn sẽ thấy: Do đây là bản Demo do đó khi thực hiện chương trình vi điều khiển gặp nhiều khó khăn.Mong các bạn thông cảm.Khi chúng tôi chỉ giới thiệu cách thực hiện mà không đi vào chi tiết.
Nạp thư viện linh kiên vào
CHƯƠNG 7: CÁC ỨNG DỤNG MỞ RỘNG CỦA TINA7
7.1. Tạo marco
7.1.1. Tạo macro từ sơ đ ồ nguyên lý
Tạo macro giúp ta làm mạch đởn giản hơn, và đỡ phải lặp lại các đoạn mạch giống nhau nhất là các mạch số bằng cách chia mạch ra làm nhiều mạch con. Tina sẽ tự động thay thế các mạch con này bằng các hình chữ nhật ở trong schematic,hoặc bạn có thể thay đổi bắt cứ hình dạng nào của nó mà bạn bằng cách dùng schematic symbol của Tina
Bạn cũng có thể đổi bất cứ một sơ đồ mạch nào thành một mạch con-được gọi là mạch con bằng cách thêm cách cực vào, rồi lưu lại với đuôi là .tsm
Bây giờ ta hãy xem cách để tạo một macro bằng một ví dụ dưới đây. Lấy mạch Half Adder có sẵn trong example(Half_add.tsc) rồi chuyển nó sang macro.
Khi bạn các macro pin, thì các nhãn sẽ tự điền vào(mặc định là Pin1 ,Pin 2…) .Nếu bạn muốn đổi tên thì double click vao macro pin và điền tên muốn đặt vào ô label. Bạn cũng có thể kéo đi với chuột , hay là xoay qua trái phhải với nút + va trừ hay các nút
Tiếp theo để tạo ra một macro và lưu lại cái macro mới này.chọn phiêu lệnh New
macro winzard ở trong tools menu. Đặt tên la Half Adder, và đặt tên nhãn là HA. Cái nhãn
này sẽ hiển thị như là môt cái nhãn của thành phần(đươc ghi ở trên thành phần đó.
Bây giờ ta hay xem cách đưa một macro vào sơ đồ mạch và sử dụng nó.
Chọn File/New. Rồi chọn Insert/Macro, sau đó chọn macro ta vừa mới tạo Half
adder.tsm, và click Open.
Macro sẽ hiện ra ở ngay con chuột và nếu ta muốn đặt nó vào đâu thì rê chuột tới đó. Sau đó cilk chuột trái. Hình chữ nhật tương trưng cho macro này sẽ hiện ra một cách đầy đủ. Chú ý rằng hình chữ nhật tượng trưng cho một sơ đồ mạch này đươc tạo ra một cách tự động, tên của macro mà chúng ta đã đặt ở trong hình chữ nhật, và nhãn thì ở trên hình chữ nhật đó.
Bây giờ bạn có thể thêm nhiều thành phần khác nữa của mạch, nối chúng với macro Để trở về sơ đồ mạch ban đầu click double vào macro rồi chọn enter macro.
Một macro còn có thể có một hoặc nhiều macro khác ở bên trong. Chúng ta hay sử dụng bộ cộng macro half adder để tạo ra một macro full adder chứa hai macro half adder.
Để làm điều đó, ta thêm vào một macro half adder thứ hai, rồi thêm một số thành phần và dây dẫn như hình.
Mà ta sẽ tạo ra một hình khác. Đặt tên là Full adder và tên nhãn là FA. Ta bỏ chọn auto generated checkbox và nhấn ở bên cạnh nó. Sẽ hiện ra một cái list trong đó có tất cả các hình hiện có.
Lưu ý rằng các tên nhãn của macro pin phải giông như tên o trên biểu tượng. Ví dụ ta phải sử dụng các tên(A,B,Ci,Co,S). Nếu bạn không thấy các biểu tượng thay thế thì hãy kiểm tra lại tên các cực hay là thử tạo ra một biểu tượng mới sẽ được giới thiệu sau:
Để sử dụng macro ta vừa tạo, chọn insert/macro sau đó chọn Full adder.tsm và click open:
Double click vào biểu tượng chọn enter macro thì mạch điện thực sự bên trong sẽ hiện lên(ở đây là hai bộ cộng bán kỳ.
7.1
.2 . Tạo macro từ các mạch con ở spice
Tina cho phép bạn tạo một macro từ các mạch con ở trong spice. Bạn có thể tự làm hay download trên mạng. Chú ý rằng cũng có những thành phần ở trong spice có thể được mở rộng tử thư viện đã được xây dựng bởi nhà sản xuất.
Chúng ta hãy thử tạo 1 UA741 dùng để khuyết đại.
Đầu tiên, chọn file chứa mạch con. Bằng cách chọn New Macro Wizard ở trong menu Tool. Bỏ chọn the current circuit checkbox và nhấn vào . Một hộp thoại mới sẽ xuất hiện. Chọn vào hộp thoại “PSpice subcircuit file” ở trường “Files of type”. Rồi sau đó vào thư mục spice là thư mục con của Examples, sau đó chọn file UA741.CIR, và nhấn nút open. Mặc dịnh là chế độ tự tạo hình dạng được sử dụng(hình dạng mặc định là hình chữ nhật), nhưng chúng ta hãy thử tự chọn hình dạng thích hợp cho UA741. Bỏ chọn ở
Chọn hình tượng trưng cho opamp và nhấn OK. Một hộp thoại để lưu sẽ được hiện lên. Lưu macro mới này với tên UA741( phần mở rộng mặc định là .TSM).
Bây giờ chúng ta hãy thêm macro chúng ta vừa tạo vào mạch và kiểm tra nội dung bên trong của nó.
Chọn phiếu lệnh Macro của menu insert. Click chọn UA741.TSM ở trong folder maclib và nhấn open. Bây giờ macro vừa chọn sẽ được gắn vào con trỏ. Di chuyển con trỏ