Các công ty tham gia ch ơng trình VHSIC nhận thấy−ợc dùng để mô tả −ợc dùng để mô tảrằng họ cần phải có một công cụ nào đó để thiết kế các giản đồ đầu vào cho các IC chuyêndụng cỡ lớn, v
Trang 1MỤC LỤC :
LỜI MỞ ĐẦU 2
CHƯƠNG I ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ CỦA ĐỒ ÁN 3
I – Đặt vấn đề 3
II – Nhiệm vụ của đồ án 3
CHƯƠNG II CƠ SỞ LÝ THUYẾT 3
I - LED Matrix 3
II – FPGA 5
1.Kiến trúc FPGA 6
2.Ngôn ngữ VHDL 7
CHƯƠNG III THIẾT KẾ HỆ THỐNG SỬ DỤNG PHẦN MỀM XILINX ISE 13
I-Tổng quan phần mền Xilinx ISE 13
II -Thiết kế chương trình điều khiển LED matrix 15
1 Sơ đồ khối 15
2 CODE VHDL điều khiển LED matrix : 20
III - Kết luận 26
Trang 2LỜI MỞ ĐẦU
Ngày nay công nghệ vi điện tử đã trở thành một lĩnh vực phát triển và được rất nhiều cácnước trên thế giới chú trọng phát triển.Tại sao nó lại được chú trọng đến vậy,xét về phạm viứng dụng ta thấy hệ Nhúng có liên quan,ảnh hưởng đến nhiều lĩnh vực trong đời sống
Trong sinh hoạt của con người,nó làm cho cuộc sống của con người ngày càng tiệnnghi,thoải mái.sự xuất hiện hàng loạt các thiết bị phục vụ nhu cầu đời sống của con ngườikhông chỉ tăng về số lượng mà còn tăng về tính năng,chất lượng và độ an toàn như máy giặt,tủlạnh,lò vi sóng…
Trong sản xuất,nó làm tăng năng suất lao động,giảm sức lao động của con người,thay conngười hoạt động ở những nơi có điều kiện hết sức khắc nhiệt…Và nó liên quan đến các ứngdụng công nghệ cao như vũ trụ…
Với tầm quan trọng của công nghệ vi điện tử.Nó xứng đáng là lĩnh vực mang tầm chiến lượctrong sự phát triển của các nước trên thế giới.Nước ta cũng không ngoại lệ,việc xác định đượctầm quan trọng đó.Nhà nước cũng ưu tiên trong đầu tự,việc học,nghiên cứu.Nhiều cơ sở vàtrung tâm nghiên cứu đã và đang hoạt động ,phát triển
Với sinh viên trường kĩ thuật thì đây là nghành học đầy tiềm năng.Nhiều cuộc thi, nhiềucông trình nghiên cứu khoa học phục vụ cho việc học và nghiên cứu đã ra đời,nhằm mục đíchphát triển sự học hỏi,sự sáng tạo,tư duy,gắn liền với thực tiễn
Theo yêu cầu của mô học cũng như để sử dụng thành thạo công nghệ FPGA em đã quyếtđịnh chọn để tài :
“Thiết kế bộ xử lý hình ảnh quảng cáo trên nền LED matrix sử dụng FPGA”
Nội dung đè tài :
Tìm hiểu về LED matrix
Tìm hiểu về FPGA
Tìm hiểu phần mềm hỗ trợ thiết kế xilinx ISE
Thiết kế hệ thống
Vì đây là trong khuôn khổ bài tập lớn, nên em chỉ thiết kế trên mô hình thí nghiệm,
sử dụng ngôn ngữ VHDL để mô hình hóa hệ thống phần cứng Em xin chân thành cám ơnthầy LÊ HẢI SÂM đã hướng dẫn chi tiết về FPGA và phương pháp thiết kế mô hình hóaphần cứng
Hà Nội, ngày 30-10-2009Sinh viên thực hiện : Phạm Văn Phong
2
Trang 3CHƯƠNG I ĐẶT VẤN ĐỀ VÀ NHIỆM VỤ CỦA ĐỒ ÁN
I – Đặt vấn đề
Trong thời đại ngày nay, khoa học công nghệ ngày càng phát triển và được ứngdụng rất nhiều trong thực tế Trong đó thì các lĩnh vực như giả trí, dịch vụ quảng cáokhuếch trương sản phầm để thu hút sự chú ý của các doanh nghiệp cũng như cá nhân ngàycàng phát triển mạnh mẽ Để làm cho sản phầm hoặc hình ảnh công ty thu hút sự chú ý,quan tâm của khách hàng thì dịch vụ quảng cáo phải thật ấn tượng, choáng ngợp, bắt mắt…
Để giải quyết vấn đề này thì có rất nhiều phương án, nhưng hiện nay phương án mà đượccác giới kinh doanh sử dụng hiệu quả nhất là dùng bảng led matrix Với những xử lý hìnhảnh sống động, màu sắc ấn tượng đã là sự lựa chọn hàng đầu cho các nhà kinh doanh Do
đó, thiết kế hệ thống bảng điện tử để phục vụ nhu cầu quảng cáo, khuếch trương hình ảnhcửa hàng, doanh nghiệp, công ty là rất cần thiết
II – Nhiệm vụ của đồ án
Với sự lựa chọn để tài này, trước tiên em cần phải tìm hiểu chi tiết về LED matrixcũng như các phương pháp quét LED, hiển thị xử lý hình ảnh…Sau đó tìm hiểu các phươngpháp ứng dụng FPGA để giải quyết bài toán đặt ra Vì giới hạn của để tài chỉ thực hiện môphỏng và hiểu cách thức hoạt động, phương pháp lập trình sử dụng FPGA cùng với thờigian thực hiện ít nên em chỉ giải quyết bài toán dưới dạng mô hình, hi vọng khi có thời gian
và điều kiện thì em có thể triển khai ứng dụng thực tế
CHƯƠNG II CƠ SỞ LÝ THUYẾT
I - LED Matrix
Dựa trên nguyên tắc như quét màn hình,ta có thể thực hiện việc hiển thị ma trận đèn bằngcách quét theo hang và quét theo cột.Mỗi Led trên ma trận Led có thể coi như một điểmảnh.Địa chỉ của mỗi điểm ảnh này được xác định đồng thời bởi mạch giải mã hang và giải
mã cột,điểm ảnh này sẽ được xác định nhờ dữ liệu đưa ra từ bộ đi điều khiển
Như vậy tại mỗi thời điểm chỉ có trạng thái của một điểm ảnh xác định.Tuy nhiên khixác định địa chỉ và trạng thái của điểm ảnh tiếp theo thì các điểm ảnh còn lại sẽ chuyển vềtrạng thái tắt.Vì thế để hiển thị được toàn bộ hình ảnh mà ta muốn thì ta phải quét ma trậnnhiều lần với tốc độ quét rất lớn,lớn hơn nhiều lần thời gian kịp tắt của đèn.Mắt người chỉnhận biết được tối đa 24 hình/s do đó nếu tốc độ quét lớn mắt người sẽ không nhận biếtđược sự gián đoạn hay là nhấp nháy của đèn Led(đánh lừa cảm giác mắt)
Trang 4Ma trận LED
bộ đệm Giải mã
2
Hàng 1
2
3
4
3 4 Cột 1 2 3 4
Một điều cũng quan trọng ở đây là điều chỉnh độ sang của Led,thong thường Led sáng bình thường ở điện áp 2-3V,dòng điện từ 20-30mA.Để đảm bảo Led sáng bình thường thì yêu cầu mạch thiết kế phải đáp ứng đủ 2 điều kiện trên Sơ đồ khối :
Để thực hiện được quét hang và quét cột thì ma trận Led được thiết kết như sau:
Trạng thái của một Led sẽ được quyết định bởi tín hiệu điện áp đi vào đồng thời cả 2 chân.để Led sáng thì ta phải cấp điện áp phù hợp vào chân dương của Led(chân Anot),còn chân catot thì nối đất.Đèn tắt khi ta không cấp nguồn cho Led hoặc để 2 đầu anot và catot cung ở mức điện áp
Ta có sơ đồ mạch nguyên lý của Led 8x8:
4
Trang 5II – FPGA
Field-programmable gate array (FPGA) là vi mach dùng cấu trúc mảng phần tử logic mà
người dùng có thể lập trình được (Chữ field ở đây muốn chỉ đến khả năng tái lập trình “bên
ngoài” của người sử dụng, không phụ thuộc vào dây chuyền sản xuất phức tạp của nhà máybán dẫn) Vi mạch FPGA được cấu thành từ các bộ phận:
Các khối logic cơ bản lập trình được (logic block)
Hệ thống mạch liên kết lập trình được
Khối vào/ra (IO Pads)
Phần tử thiết kế sẵn khác như DSP slice, RAM, ROM, nhân vi xử lý
FPGA cũng được xem như một loại vi mạch bán dẫn chuyên dụng ASIC, nhưng nếu sosánh FPGA với những ASIC đặc chế hoàn toàn hay ASIC thiết kế trên thư viện logic thìFPGA không đạt đựợc mức độ tối ưu như những loại này, và hạn chế trong khả năng thựchiện những tác vụ đặc biệt phức tạp, tuy vậy FPGA ưu việt hơn ở chỗ có thể tái cấu trúc lạikhi đang sử dụng, công đoạn thiết kế đơn giản do vậy chi phí giảm, rút ngắn thời gian đưasản phẩm vào sử dụng
Còn nếu so sánh với các dạng vi mạch bán dẫn lập trình được dùng cấu trúc mảng phần tửlogic như PLA, PAL, CPLD thì FPGA ưu việt hơn các điểm: tác vụ tái lập trình của FPGAthực hiện đơn giản hơn; khả năng lập trình linh động hơn; và khác biệt quan trọng nhất là
kiến trúc của FPGA cho phép nó có khả năng chứa khối lượng lớn cổng logic (logic gate),
so với các vi mạch bán dẫn lập trình được có trước nó
Thiết kế hay lập trình cho FPGA được thực hiện chủ yếu bằng các ngôn ngữ mô tả phầncứng HDL như VHDL, Verilog, AHDL, các hãng sản xuất FPGA lớn như Xilinx, Alterathường cung cấp các gói phần mềm và thiết bị phụ trợ cho quá trình thiết kế, cũng có một
số các hãng thứ ba cung cấp các gói phần mềm kiểu này như Synopsys, Synplify Các góiphần mềm này có khả năng thực hiện tất cả các bước của toàn bộ quy trình thiết kế ICchuẩn với đầu vào là mã thiết kế trên HDL (còn gọi là mã RTL)
1) Kiến trúc FPGA
Cấu trúc tổng thể của một FPGA được minh họa ở hình sau
Trang 6Khối logic FPGA
Phần tử chớnh của FPGA là cỏc khối logic (logic block) Khối logic được cấu thành từ LUT
và một phần tử nhớ đồng bộ flip-flop, LUT (Look up table) là khối logic cú thể thực hiện
bất kỡ hàm logic nào từ 4 đầu vào, kờt quả của hàm này tựy vào mục đớch mà gửi ra ngoàikhối logic trực tiếp hay thụng qua phần tử nhớ flip-flop
Trong tài liệu hướng dẫn của cỏc dũng FPGA của Xilinx cũn sử dụng khỏi niệm SLICE, 1Slice tạo thành từ gồm 4 khối logic, số lượng cỏc Slices thay đổi từ vài nghỡn đến vài chụcnghỡn tựy theo loại FPGA
Nếu nhỡn cấu trỳc tổng thể của mảng LUT thỡ ngoài 4 đầu vào kể trờn cũn hỗ trợ thờm 2đầu vào bổ xung từ cỏc khối logic phõn bố trước và sau nú nõng tổng số đầu vào của LUTlờn 6 chõn Cấu trỳc này là nhằm tăng tốc cỏc bộ số học logic
thumb|200px|Khối chuyển mạch của FPGA Mạng liờn kết trong FPGA được cấu thành từcỏc đường kết nối theo hai phương ngang và đứng, tựy theo từng loại FPGA mà cỏc đườngkết nối được chia thành cỏc nhúm khỏc nhau, vớ dụ trong XC4000 của Xilinx cú 3 loại kếtnối: ngắn, dài và rất dài Cỏc đường kết nối được nối với nhau thụng qua cỏc khối chuyển
mạch lập trỡnh được (programable switch), trong một khối chuyển mạch chứa một số lượng
nỳt chuyển lập trỡnh được đảm bảo cho cỏc dạng liờn kết phức tạp khỏc nhau
Ngoài cỏc khối logic tựy theo cỏc loại FPGA khỏc nhau mà cú cỏc phần tử tớch hợp thờmkhỏc nhau, vớ dụ để thiết kế những ứng dụng SoC, trong dũng Virtex 4,5 của Xilinx cú chứanhõn xử lý PowerPC, hay trong Atmel FPSLIC tớch hợp nhõn ARV…, hay cho những ứngdụng xử lý tớn hiệu số DSP trong FPGA được tớch hợp cỏc DSP Slide là bộ nhõn cộng tốc
độ cao, thực hiện hàm A*B+C, vớ dụ dũng Virtex của Xilinx chứa từ vài chục đến hàngtrăm DSP slices với A, B, C 18-bit
2) ngụn ngữ VHDL
Thiết kế hay lập trỡnh cho FPGA được thực hiện chủ yếu bằng cỏc ngụn ngữ mụ tả phầncứng HDL như VHDL, Verilog, AHDL Em quyết định chọn ngụn ngữ VHDL để lậptrỡnh cho FPGA
VHDL (VHSIC Hardware Description Laguage) là một ngôn ngữ đ ợc dùng để mô tả−ợc dùng để mô tảcác hệ thống phần cứng điện tử số Nó đ ợc ch ơng trình quốc gia về các mạch tích hợp−ợc dùng để mô tả −ợc dùng để mô tảtốc độ rất cao - VHSIC (Very High Speed Integrated Circuits) do chính phủ Mỹ khởi
x ớng vào đầu những năm 1980 Các công ty tham gia ch ơng trình VHSIC nhận thấy−ợc dùng để mô tả −ợc dùng để mô tảrằng họ cần phải có một công cụ nào đó để thiết kế các giản đồ đầu vào cho các IC chuyêndụng cỡ lớn, và họ đã đề xuất việc lập ra một ngôn ngữ mô tả phần cứng dùng để mô tả cấutrúc và chức năng của các mạch tích hợp (còn đ ợc gọi là IC - Integrated Circuits).−ợc dùng để mô tả
6
Trang 7Kể từ đó, VHDL ra đời và đ ợc phát triển, rồi sau đó đ ợc Hiệp hội các kỹ s Điện−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tả
và Điện tử - IEEE (Institude of Electrical and Electronic Engineers) chấp nhận coi nh là−ợc dùng để mô tảtiêu chuẩn tại Mỹ Phiên bản đầu tiên là Tiêu chuẩn IEEE 1076-1987 (còn đ ợc gọi là−ợc dùng để mô tảVHDL-87) Phiên bản này đ ợc bổ sung sửa đổi năm 1993 thành IEEE 1076-1993 (còn−ợc dùng để mô tả
đ ợc gọi là VHDL-93) −ợc dùng để mô tả
* Mô tả cấu trúc
Một hệ thống điện tử số có thể đ ợc mô tả thành các khối - còn gọi là module với−ợc dùng để mô tảcác đầu vào và đầu ra Các giá trị điện ở đầu ra có mối quan hệ với các giá trị trên các đầuvào Hình 2.16a biểu diễn một ví dụ nh vậy Khối F có hai đầu vào A và B, và có một đầu−ợc dùng để mô tả
ra Y Sử dụng ngôn ngữ VHDL để mô tả khối F, thì ta gọi khối F là một thực thể (entity)thiết kế, và các đầu vào và đầu ra là các cổng (port) Có một cách để mô tả chức năng củakhối F, đó là chúng ta mô tả các khối con (sub-module) thành phần của nó Mỗi một khốicon đ ợc gọi là một tập hợp (instance) của một số thực thể, và các cổng của các tập hợp đó−ợc dùng để mô tả
đ ợc nối lại bằng các đ ờng tín hiệu (signal) −ợc dùng để mô tả −ợc dùng để mô tả
Hình dưới mô tả khối F là một tập hợp gồm các thực thể G, H và I Kiểu mô tả này đ ợc−ợc dùng để mô tảgọi là mô tả cấu trúc (structural) Các thực thể G, H và I cũng đ ợc mô tả theo cấu trúc−ợc dùng để mô tả
t ơng tự nh vậy.−ợc dùng để mô tả −ợc dùng để mô tả
(a) Khối F có hai đầu vào và một đầu ra; (b) Khối F gồm có 3 thực thể G, H, I
* Mô tả hoạt động
Trong nhiều tr ờng hợp, việc mô tả cấu trúc không t ơng ứng với việc mô tả hoạt−ợc dùng để mô tả −ợc dùng để mô tả
động Ng ời ta th ờng dùng cách mô tả hoạt động theo kiểu từ d ới lên dựa vào mô tả−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảcấu trúc Ví dụ, khi chúng ta thiết kế hệ thống điện tử thì không cần phảI mô tả cụ thể cấutrúc bên trong của từng con IC mà chỉ cần mô tả theo chức năng của các khối của hệ thống
mà thôi Tr ờng hợp này đ ợc gọi là mô tả chức năng (fuctional) hoặc mô tả hoạt động−ợc dùng để mô tả −ợc dùng để mô tả(behavioural)
Để minh hoạ cho điều này, chúng ta giả sử rằng chức năng của thực thể F trong Hình2.16a là một mạch OR đảo Khi mô tả hoạt động của F ta có thể biếnđổi theo đại sốBoolean nh sau: −ợc dùng để mô tả
Trang 8Y = A.+ B
Đối với các mạch có chức năng hoạt động phức tạp hơn, thì không thể biển diễn theocác chức năng đầu vào đ ợc Trong các hệ thống có phản hồi ng ợc, đầu ra th ờng là các−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảhàm chức năng theo thời gian Ngôn ngữ VHDL cho phép giải quyết vấn đề này bằng cáchmô tả hoạt động theo khuôn dạng ch ơng trình lập trình.−ợc dùng để mô tả
* Mô tả sự kiện rời rạc theo thời gian
Khi chức năng hoạt động và cấu trúc của khối đã đ ợc chỉ định rõ, thì ng ời ta có thể−ợc dùng để mô tả −ợc dùng để mô tảmô phỏng khối bằng cách kích hoạt theo mô tả hoạt động của nó Điều này có thể thực hiện
đ ợc bằng cách mô phỏng quá trình hoạt động đã đ ợc rời rạc thành các b ớc theo thời−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảgian Tại một vài thời điểm mô phỏng, khối đầu vào đ ợc kích hoạt bằng cách thay đổi giá−ợc dùng để mô tảtrị trên cổng đầu vào Khối này phản ứng lại bằng cách thực hiện mã lệnh theo mô tả hoạt
động của nó đã đ ợc gán và tạo ra các giá trị mới đ a đến đ ờng tín hiệu để gửi tới các−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảcổng đầu ra của nó tại các thời điểm mô phỏng tiếp theo sau Việc này đ ợc gọi là kế−ợc dùng để mô tảhoạch giao tác (scheluding a transaction) trên tín hiệu đó Nếu giá trị mới khác giá trị tr ớc−ợc dùng để mô tả
đó đã có trên đ ờng tín hiệu, thì sẽ có một sự kiện (event) xảy ra, và các khối khác với các−ợc dùng để mô tả
đầu vào đã đ ợc kết nối với đ ờng tín hiệu đó có thể sẽ đ ợc kích hoạt.−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tả
Quá trình mô phỏng bắt đầu với một pha đ ợc gọi là pha khởi động (initialisatoin−ợc dùng để mô tảphase), và sau đó các quá trình đ ợc thực hiện lặp lại hai giai đoạn trong một chu kỳ mô−ợc dùng để mô tảphỏng (simulation cycle) Trong pha khởi động, tất cả các tín hiệu đ ợc cung cấp sẵn các−ợc dùng để mô tảgiá trị khởi động, thời gian mô phỏng đ ợc đ a về 0, và mỗi một ch ơng trình hoạt động−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảcủa một khối đ ợc kích hoạt −ợc dùng để mô tả
Trong giai đoạn đầu tiên của chu kỳ mô phỏng, thời gian mô phỏng đ ợc nâng Quá−ợc dùng để mô tảtrình mô phỏng bắt đầu với một pha đ ợc gọi là pha khởi động (initialisatoin phase), và sau−ợc dùng để mô tả
đó các quá trình đ ợc thực hiện lặp lại hai giai đoạn trong một chu kỳ mô phỏng−ợc dùng để mô tả(simulation cycle) Trong pha khởi động, tất cả các tín hiệu đ ợc cung cấp sẵn các giá trị−ợc dùng để mô tảkhởi động, thời gian mô phỏng đ ợc đ a về 0, và mỗi một ch ơng trình hoạt động của−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảmột khối đ ợc kích hoạt Trong giai đoạn đầu tiên của chu kỳ mô phỏng, thời gian mô−ợc dùng để mô tảphỏng đ ợc nâng lên thành thời gian sớm nhất tại thời điểm mà giao tác đã đ ợc thực−ợc dùng để mô tả −ợc dùng để mô tảhiện Tất cả các giao tác đ ợc đ a vào tại thời điểm này đều đ ợc kích hoạt, và điều này−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tả
có thể gây ra một số sự kiện nào đó
Trong gian đoạn thứ hai của chu kỳ mô phỏng, tất cả các khối phản ứng lại đối với các
sự kiện vừa xảy ra trong giai đoạn một sẽ kích hoạt ch ơng trình hoạt động của chúng Các−ợc dùng để mô tả
ch ơng trình đó th ờng là kế hoạch giao tác trên các tín hiệu đầu ra của chúng Khi tất cả−ợc dùng để mô tả −ợc dùng để mô tảcác ch ơng trình kết thúc hoạt động, chu kỳ mô phỏng đ ợc lặp lại Nếu không có thêm−ợc dùng để mô tả −ợc dùng để mô tảgiao tác nào thì quá trình mô phỏng đã hoàn thành
Mục đích của việc mô phỏng là để biết thêm thông tin về sự thay đổi trong hệ thống tạitừng thời điểm Việc này có thể thực hiện đ ợc giám sát bởi ch ơng trình giám sát mô−ợc dùng để mô tả −ợc dùng để mô tảphỏng (simulation monitor) Ch ơng trình này nhằm mục đích ghi lại quá trình hoạt động−ợc dùng để mô tảtheo từng thời điểm tại các điểm để dùng vào việc phân tích về sau
* Cú pháp và ngữ nghĩa:
8
Trang 9Hoạt động của một module có thể đ ợc mô tả theo dạng ngôn ngữ lập trình Trong mục−ợc dùng để mô tảnày sẽ giới thiệu về cú pháp và ngữ nghĩa của các khái báo trong ngôn ngữ VHDL
+ Các biểu thức và toán tử
Các biểu thức trong VHDL hoàn toàn t ơng tự nh các biểu thức trong các ngôn ngữ−ợc dùng để mô tả −ợc dùng để mô tảlập trình khác Một biểu thức là một công thức kết hợp các đa thức với các toán tử Các đathức bao gồm tên các đối số, ký hiệu bằng chữ, các hàm gọi và các dấu ngoặc của biểu thức.Các toán tử đ ợc liệt kê trong Bảng−ợc dùng để mô tả dưới theo thứ tự u tiên.−ợc dùng để mô tả
Ưu tiờn cao nhất **; abs; not;
Ưu tiờn giảm dần *; /; mod; rem;
Ưu tiờn giảm dần + (sign); -(sign)
Ưu tiờn giảm dần +; -; &;
Ưu tiờn giảm dần =; /=; <; <=; >; >=;
Ưu tiờn thấp nhất And; or; nand; nor; xor;
Các toán tử logic and, or, nand, nor, xor và not hoạt động trên các giá trị kiểu bit hoặc làboolean, và trên các mảng 1 chiều của các kiểu đó Đối với các toán hạng mảng (array), sựhoạt động tuân theo các phần tử t ơng ứng của từng mảng, th ờng độ lớn của mảng có−ợc dùng để mô tả −ợc dùng để mô tảcùng độ lớn với kết quả Đối với các toán hạng bit và boolean, các toán tử and, or, nand vànor là các toán tử “ngắn mạch” (short-circuit), do chúng chỉ u tiên hơn so với toán hạng−ợc dùng để mô tảbên phải của chúng nếu toán hạng bên trái không xác định đ ợc kết quả Do and và nand−ợc dùng để mô tảchỉ u tiên hơn so với toán hạng bên phải nếu toán hạng bên trái là “true” hoặc “1”, còn or−ợc dùng để mô tả
và nor chỉ u tiên hơn toán hạng bên phải nếu toán hạng bên trái là “false” hoặc “0” −ợc dùng để mô tảCác toán tử quan hệ =, /=, <, <=, > và >= phải có các toán hạng ở hai đầu cùng kiểu, và
th ờng cho các kết quả theo kiểu boolean Các toán tử bằng (= và /=) có thể có các toán−ợc dùng để mô tảhạng theo bất kỳ kiểu nào Đối với các toán tử so sánh, hai giá trị bằng nhau nếu tất cả cácphần tử t ơng ứng của chúng bằng nhau Các toán tử dấu (+, -), các toán tử cộng (+) và trừ−ợc dùng để mô tả(-) có cách sử dụng của chúng trên các toán hạng dạng số Toán tử kết nối (&) làm việc trêncác mảng một chiều thành dạng một mảng mới với nội dung của toán hạng bên phải kế tiếptoán hạng trái Nó có thể móc nối một phần tử đơn vào một mảng hoặc hai phần tử độc lập
để thành một mảng mới
Các toán tử nhân (*) và chia (/) làm việc với các số nguyên, số dấu phẩy động và cáckiểu đơn vị vật lý Các toán tử chia lấy phần nguyên (mod- modulus) và chia lấy phần d−ợc dùng để mô tả(rem - remainder) chỉ làm việc với kiểu số nguyên Toán tử giá trị tuyệt đối (abs) chỉ làmviệc với bất kỳ kiểu số nào Cuối cùng toán tử mũ (**) có thể làm việc với kiểu số nguyên
và toán hạng trái của kiểu số dấu phẩy động, nh ng phải có một số nguyên ở toán hạng−ợc dùng để mô tảphải, còn toán hạng phải mà có giá trị âm chỉ đ ợc phép nếu toán hạng trái là một số dấu−ợc dùng để mô tảphẩy động dạng số
Trang 10+ Các khai báo tuần tự
VHDL cung cấp một công cụ hiệu quả cho việc kiểm tra trạng thái của các đối t ợng−ợc dùng để mô tả
và điều khiển luồng hoạt động của các mô hình – đó là các phép gán
Phép gán biến
Nh các ngôn ngữ lập trình khác, một biến đ ợc gán một giá trị mới bằng cách sử−ợc dùng để mô tả −ợc dùng để mô tảdụng phép khai báo gán
Khai báo biến trong process có phạm vi chỉ trong process đó Biến có thể khai báo trong
ch ơng trình con Khai báo biến bên ngoài process hoặc ch ơng trình con thì gọi là shared−ợc dùng để mô tả −ợc dùng để mô tảvariable Các biến này có thể cập nhật và đọc nhiều process
L u ý tín hiệu không đ ợc khai báo trong process Các phát biểu gán tín hiệu xuất−ợc dùng để mô tả −ợc dùng để mô tảhiện trong process đ ợc gọi là phát biểu gán tín hiệu tuần tự, kể cả phát biểu gán biến, thực−ợc dùng để mô tảhiện tuần tự độc lập với việc xuất hiện các sự kiện trên mỗi tín hiệu trong biểu thức bênphải, khác với việc thực thi của các phát biểu gán tín hiệu đồng thời trong phần tr ớc −ợc dùng để mô tả
Khai báo biến (bắt đầu bằng từ variable) khai báo biến khác với tín hiệu là nó luôn
đ ợc gán giá trị ngay tức khắc và phép gán tín hiệu là := tổ hợp ký hiệu, nó đ ợc gán giá−ợc dùng để mô tả −ợc dùng để mô tảtrị sau khoảng delay ( xác định do ng ời sử dụng hoặc mặc nhiên là khoảng delta) và phép−ợc dùng để mô tảgán điều khiển việc gán giá trị cho biến <= tổ hợp symbol
Cú pháp là:
khai báo gán biến : đích := biểu thức;
Trong tr ờng hợp đơn giản nhất, đích của phép gán là một tên đối t ợng, và giá trị của−ợc dùng để mô tả −ợc dùng để mô tảbiểu thức đ ợc gán theo tên đối t ợng Đối t ợng và giá trị phải có cùng một kiểu.−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tả
Khai báo If (nếu)
Khai báo If cho phép lựa chọn các khai báo để kích hoạt, phụ thuộc vào một hoặc nhiều
điều kiện Cú pháp nh sau: −ợc dùng để mô tả
khai báo if :
if điều kiện then
chuỗi các khai báo
{ elsif điều kiện then
chuỗi các khai báo
[ else
chuỗi các khai báo }
10
Trang 11end if;
Các điều kiện là các biểu thức trả về giá trị boolean Các điều kiện đ ợc đánh giá là−ợc dùng để mô tả
đúng khi có một giá trị đ ợc trả về “true” Ng ợc lại thì mệnh đề else đ ợc thực hiện, và−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảkhai báo của nó đ ợc kích hoạt.−ợc dùng để mô tả
Khai báo Case
Dạng của phát biểu case là:
case expression is
when choices=> sequential -statement –branch 1#
when choices=> sequential -statement –branch 2#
Các khai báo vòng lặp
VHDL cung cấp kiểu khai báo vòng lặp cơ bản có thể sử dụng các vòng lặp while và forgiống nh trong các ngôn ngữ lập trình khác Một phát biểu lặp đ ợc sử dụng để lặp lại−ợc dùng để mô tả −ợc dùng để mô tảmột loạt các câu lệnh tuần tự Cú pháp của phát biểu lặp là:
[loop-label:] iteration-scheme loop
sequential-statements
end loop [loop-lebel];
Có 3 kiểu sơ đồ lặp Đầu tiên là sơ đồ lặp có dạng:
for identifier in range
Một thí dụ cho sơ đồ lặp này là:
FACTORAL:=1;
Trang 12for NUMBER in 2 to N loop
FACTORAL :=FACTORAL*NUMBER;
end loop;
Khai báo Null (rỗng)
Khai báo null không có hiệu quả Nó có thể đ ợc sử dụng để biểu diễn trạng thái rõ−ợc dùng để mô tảràng là không có hành động nào đ ợc yêu cầu trong tr ờng hợp đó Ng ời ta th ờng sử−ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tả −ợc dùng để mô tảdụng nó trong các khai báo case, trong đó tất cả các giá trị có thể của biểu thức lựa chọnphải đ ợc liệt kê để chọn, nh ng đối với một vài lựa chọn thì không yêu cầu hành động−ợc dùng để mô tả −ợc dùng để mô tảnào Ví dụ nh sau: −ợc dùng để mô tả
case controller_command is
when forward => engage_motor_forward;
when reverse => engage_motor_reverse;
when idle => null;
end case;
*Ch ơng trình con −ơng trình con
Giống nh các ngôn ngữ lập trình khác, VHDL cung cấp công cụ thực hiện ch ơng−ợc dùng để mô tả −ợc dùng để mô tảtrình con linh hoạt d ới dạng các thủ tục và các hàm VHDL cũng cung cấp một kiểu đóng−ợc dùng để mô tảgói mạnh đối với tập các mô tả và các đối t ợng đ a vào các đơn vị dạng module Các−ợc dùng để mô tả −ợc dùng để mô tả
đóng gói cũng cung cấp một tiêu chuẩn về tính trừu t ợng dữ liệu và thông tin ẩn.−ợc dùng để mô tả
CHƯƠNG III THIẾT KẾ HỆ THỐNG SỬ DỤNG PHẦN MỀM XILINX ISE
I-Tổng quan phần mền Xilinx ISE
Xilinx ISE (Integrated Software Environment) là một bộ phần mềm thiết kế của Xilinx ,cho phộp ta thực hiện cỏc hệ thống nhỳng của Xilinx từ khõu thiết kế ban đầu (thụng quaVHDL, Verilog HDL, ABEL hoặc là vẽ Schematic) cho đến khõu cuối cựng là nạp thiết kếcủa mỡnh lờn FPGA Để bắt đầu một thiết kế, ta phải tạo một project mới trong ISE thụngqua cụng cụ quản lý ISE Project Navigator Sau đú ISE Project Navigator sẽ quản lý tất cảcỏc quỏ trỡnh thiết kế trong trong project đú
Quy trỡnh thiết kết trong ISE bao gồm cỏc quỏ trỡnh sau : Design Entry -> Synthesis ->Implementation -> Verification -> Device Configuration
12
Trang 13* Design Entry : Đây là bước đầu tiên trong quá trình thiết kế của ISE Trong suốt quá
trình design entry, ta sẽ thiết kế những file nguồn (Source File) theo những yêu cầu ban đầu(những mô tả chức năng của hệ thống mà ta cần phải thiết kế) Ở bước này, ta sẽ dùngnhững ngôn ngữ mô tả phần cứng như : VHDL, Verilog HDL, Abel hoặc dạng Schematic
để thiết kế Chúng ta có thể dùng nhiều ngôn ngữ khác nhau trong cùng một thiết kế Ví dụnhư : thiết kế các module chức năng bằng Verilog HDL, sau đó dùng dạng schematic (sơ
đồ khối) để thiết kế hệ thống chính
* Synthesis : Sau khi thiết kế hệ thống và thực hiện những mô phỏng để kiểm tra chức
năng logic của hệ thống, chúng ta phải chạy synthesis để chuyển đổi những file nguồn đượcviết bằng VHDL,Verilog HDL, … thành file netlist Những file netlist này cần thiết để đưavào quá trình Implementation
* Implementation : Quá trình này sẽ chuyển đổi thiết kế ở mức logic thành các file định
dạng vật lý để có thể download xuống FPGA Sau khi chạy Synthesis, chúng ta sẽ cónhững file netlist, quá trình Implementation sẽ chuyển đổi những file netlist đó thành nhữngfile cấu hình vật lý cụ thể dựa vào linh kiện FPGA cụ thể mà ta đang sử dụng, do đó quátrình này đòi hỏi chúng ta phải chỉ rõ linh kiện FPGA nào đang được sử dụng
* Verification: Sau khi chạy bước Implementation, chúng ta sẽ có thể mô phỏng thiết kế
của mình một cách chính xác hơn Vì quá trình mô phỏng ở bước Design Entry chỉ có thể
mô phỏng chức năng của mạch chứ nó chưa thể mô phỏng thời gian (timing), timing tùythuộc vào linh kiện vật lý cụ thể
* Device Configuration: Đây là bước cuối cùng trong suốt quá trình thiết kế Ở bước
này các file định dạng cấu hình sẽ được dùng để tạo ra những file bitstream để nạp xuốngchip FPGA