Một số tài liệu ngôn ngữ mô tả phần cứng VHDL, Verilog

Chào các bạn.

Mình gửi cho các bạn một số tài liệu về VHDL và Verilog.

Advanced Xilinx FPGA

Design Through Verilog HDL.pdf

Digital Design with CPLD Applications and VHDL By Dueck

Electronics-Verilog.Digital.Design.Synthesis

Verilog HDL Reference Manual

VHDL-Cookbook

Xilinx VHDL Tutorial

Theo dlbkhn.com.vn


Đấu giá trực tuyến hàng đầu Việt Nam

Circuit design with VHDL, Volnei A. Pedroni

Khi mới học FPGA thì việc học ngôn ngữ VHDL là việc cần làm đầu tiên. Mình ban đầu mò mẫm mãi, search,… trên các site về FPGA, esnips,.. cuối cùng tìm được tài liệu rất hay này.

This textbook teaches VHDL using system examples combined with programmable logic and supported by laboratory exercises. While other textbooks concentrate only on language features, Circuit Design with VHDL offers a fully integrated presentation of VHDL and design concepts by including a large number of complete design examples, illustrative circuit diagrams, a review of fundamental design concepts, fully explained solutions, and simulation results. The text presents the information concisely yet completely, discussing in detail all indispensable features of the VHDL synthesis. The book is organized in a clear progression, with the first part covering the circuit level, treating foundations of VHDL and fundamental coding, and the second part covering the system level (units that might be located in a library for code sharing, reuse, and partitioning), expanding upon the earlier chapters to discuss system coding.

Part I, “Circuit Design,” examines in detail the background and coding techniques of VHDL, including code structure, data types, operators and attributes, concurrent and sequential statements and code, objects (signals, variables, and constants), design of finite state machines, and examples of additional circuit designs.

Part II, “System Design,” builds on the material already presented, adding elements intended mainly for library allocation; it examines packages and components, functions and procedures, and additional examples of system design. Appendixes on programmable logic devices (PLDs/FPGAs) and synthesis tools follow Part II. The book’s highly original approach of teaching through extensive system examples as well as its unique integration of VHDL and design make it suitable both for use by students in computer science and electrical engineering.

Mình upload lên skydriver của Window Live nên khỏi sợ bị die trừ khi mình xóa.

Download Image

(4.9 MB)

Theo dlbkhn.com.vn


Đấu giá trực tuyến hàng đầu Việt Nam

Kit FPGA

I ) Kit phát triển
Các Kit phát triển FPGA khá mắc tiền (so với túi tiền người Việt). Mình giới thiệu với các bạn 3 kit phát triển rẻ nhất (và mình đã từng làm qua).Theo mình biết thì cả 3 Kit này đều có trong một số trường đại học Kỹ thuật, hoặc có thể mua ở Vietnam.

* Altera FPGA :

+ Cyclone II FPGA Starter Development Kit (DE1) [150USD]

+ Cyclone III FPGA Starter Kit [199USD]

* Xilinx FPGA :

+ Spartan-3 Starter Kit [149USD] (Mình nhớ trước đây có 99USD thôi mà sao giờ nó thành 149USD rồi không biết)

II) Công cụ phát triển • Altera FPGA :

o Altera Quartus
o Altera Nios IDE
o Altera SoPC Builder

• Xilinx FPGA

o Xilinx ISE
o Xilinx EDK
o Xilinx Base System Builder (BSB)

• Mô phỏng

o Mentor Graphics ModelSim

II)Ngôn ngữ mô tả phần cứng :
Không giống như CPU/DSP…FPGA thực sự không lập trình để chạy những chương trình định sẵn (Trừ việc phải lập trình cho các CPU nằm trong Chip nếu có).vì vậy khi bạn là người bắt đầu với FPGA mà đã biết về lập trình thì cần phải thay đổi suy nghĩ do đã quen làm việc với các logic cao cấp (logic của con người).
Làm thế nào để bạn có thể thiết kế một hệ thống (hoặc một chip) có chức năng nào đó ?
Nếu hệ thống của bạn không gồm CPU,thì đơn giản là sử dụng tất cả những IC số mà bạn có (mux/demux, adder, counter, Logic gate, latch, buffer, FlipFlop…) ghép nối với nhau có tới khi hoàn tất thiết kế. Một số hê thống như vậy đôi khi cần cả trăm IC số. FPGA hiểu đơn giản là thiết bị cung cấp cho bạn những “hôp đa năng” mà có thể biến thành các IC số cơ bản. Các FPGA hiện nay chứa hàng nghìn/chục nghìn thậm trí vài trăm nghìn “hộp” như thế. Vậy nhiệm vụ của chúng ta là chỉ định (config) dạng của từng hộp đa năng (FlipFlop hay Logic Gate hay Latch …) và ghép nối chúng lại với nhau cho đến khi hoàn tất hệ thống.
Vấn đề nảy sinh là các thiết kế phức tạp sử dụng vài trăm/nghìn thậm trí vài trăm nghìn kết nối và logic dẫn đến phương pháp ghép nối theo kiểu đồ họa không khả thi.Và người ta đã phát minh ra các ngôn ngữ mô tả sự hoạt động, cách ghép nối…các phần cứng với nhau gọi là ngôn ngữ mô tả phần cứng HDL (Hardware Description Language). Ngôn ngữ mô tả phần cứng giúp mô tả ngắn gọn, dễ hiểu, đơn giản các hoạt động của phần cứng. Tuy ngôn ngữ HDL đóng vai trò lớn trong việc thiết kế phần cứng, nhưng phương pháp đồ họa (đã nói ở trên) vẫn thường được sử dụng kết hợp với ngôn ngữ HDL trong một số trường hợp cần thiết (cái này giải thích dài dòng lắm, nếu ai quan tâm thì cứ hỏi, mình sẽ trả lời sau)
Sau đây là một đoạn ngôn ngữ mô tả phần cứng (Verilog HDL) cho mạch điện ở bên cạnh.(Đoạn chương trình này mình tự viết cho mục đích mô tả các khái niệm, nên chưa được test)

Hình đã được thu nhỏ 63.78% so với nguyên gốc. Click vào đây để xem hình nguyên gốc có kích thước 784 x 349.

Click on image to open in new window

Ngôn ngữ mô tả phần cứng gồm có ngôn ngữ Abel (ít dùng), Verilog HDL và VHDL.Việc lựa chọn ngôn ngữ tùy thuộc vào lựa chọn của bạn và mình không có ý kiến gì về việc ngôn ngữ nào tốt hơn (thực ra ý kiến thì có nhưng không dám nói thôi

Click on image to open in new window ).Mình hiện dùng Verilog nên ai cần hỏi gì về Verilog thì mình có thể giúp được, còn VHDL thì chịu thôi.

III)Tài liệu cơ bản và nâng cao về FPGA/Verilog:
– Asic lập trình được (Tống Văn On)
– Lập trình Asic (Tống Văn On)
– Thiết kế vi mạch CMOS VLSI (Tống Văn On)
– A Verilog HDL Primer (J.Bhasker)
– The Verilog Hardware Description Language (Thomas & Moorby)
– Tài liệu hướng dẫn của Altera và Xilinx

FPGA là gì ?

FPGA là viết tắt của thuật ngữ tiếng anh “Field programmable Gate Array”, nghĩa là Mảng cổng lập trình được dạng trường. FPGA thuộc họ ASIC lập trình được

* Ý nghĩa và vai trò của FPGA
ASIC lập trình được đã xuất hiện từ lâu dưới dạng PLD (Programmable Logic Device), nhưng vai trò của các dạng ASIC này là không nhiều vì số lượng cổng trên Chip rất ít dẫn tới chức năng của các PLD này cũng nghèo nàn và thường chỉ sử dụng với những nhiệm vụ rất hạn chế trong toàn hệ thống. Kể từ năm 1980,Các công ty sản xuất PLD hàng đầu đã đẩy mạnh quá trình nghiên cứu về FPGA và nhanh chóng cho ra các thế hệ FPGA với số lượng cổng và tốc độ ngày càng cao.các FPGA hiện nay có số lượng cổng đủ lớn để có thể thay thế cả một hệ thống bao gồm lõi CPU, Bộ điều khiển bộ nhớ (Memory Controller), các ngoại vi như SPI,Timer, I2C, GPIO, PWM, Video/Audio Controller… (nghĩa là tương đương với các SoC hiện đại).Tuy nhiên,FPGA không thể nào so sánh được với ASIC và SoC cả về kinh tế lẫn tốc độ họa động.Nhưng bù lại, với khả năng tái cấu hình mạnh, FPGA đóng một vai trò vô cùng to lớn trong việc giảm giá thành và thời gian chế tạo ASIC bằng cách sử dụng FPGA trong quá trình thiết kế luận lý trước khi đưa ra sản xuất các ASIC mẫu. Quy trình sản xuất Chip ASIC bằng cách này gọi là fabless rất phổ biến hiện nay trên thế giới, giúp các công ty nhỏ và vừa và đặc biệt là các nước yếu về công nghệ như Việt nam tham gia vào thế giới của IC.
Để giải thích cho các bạn hiểu rõ hơn sự quan trọng rất lớn của FPGA, tôi sẽ cho các bạn một ví dụ rõ hơn. Trước đây, khi muốn chế tạo ra 1 con Chip Vi Xử Lý.Người ta phải thiết kế Chip ở mức logic sử dụng các ngôn ngữ mô tả phần cứng, Để kiểm tra công đoạn này người ta sử dụng những phần mềm mô phỏng.Sau đó thiết kế phải được tổng hợp dựa trên các thư viện cấp thấp của hãng mà bạn sẽ sản xuất của con Chip của bạn sau này, sau đó là quá trình kiểm tra timing (định thời) cho toàn bộ thiết kế để đảm bảo thiết kế của bạn sẽ hoạt động ở tần số yêu cầu.Tất cả các công đoạn này đều chỉ có thể kiểm tra bằng các phần mềm mô phỏng (Điều này dẫn tới nguy cơ xảy ra sai xót rất lớn khi chuyển thiết kế sang môi trường Chip thực ). Sau đó bạn sẽ gởi thiết kế của mình tới công ty sản xuất Chip và phó mặc cho số phận,một chip mẫu giá vài triệu đô la sẽ được chuyển cho bạn, và sau đó bạn bắt đầu quá trình test chip trong môi trường thực, nếu thất bại, khả năng lớn là bạn sẽ phải thực hiện lại hoàn toàn qui trình thiết kế như đã nói ở trên, và cứ mỗi lần như vậy, bản sẽ phải bỏ sọt rác nhiều triệu đô la và khỏag thời gian nghiên cứu rất lớn, quy trình này làm cho các đất nước nghèo như việt nam không thể tham gia vào các cuộc chơi của các đất nước giàu có trong thế giới của ASIC. Nhưng với FPGA,bạn không những có thể rút ngắn thới gian thực hiện ASIC mà còn giảm chi phí nghiên cứu tối đa do quá trình kiểm tra thiết kế không những được kiểm tra bằng các phần mềm mô phỏng mà giờ đây còn có thể chạy trên các Chip thực trong mội trường có thể nói là gần với môi trường ASIC thực nhất. Khả năng tái cấu hình cho phép bạn sửa đi sửa lại thiết kế cho đến khi đạt yêu cầu mà không tốn một xu nào ngoài tiền điện mà bạn phải trả.

* Một ứng dụng quan trọng và thiết thực hơn đối với chúng ta (tôi và các bạn)
Có lẽ đọc phần trên chúng ta có thể hình dung ra ý nghĩa to lớn, vai trò quan trọng của FPGA. Nhưng sản xuất ASIC vẫn là một điều quá xa vời đối với đại đa số chúng ta, có ai trong số các bạn tự hỏi tại sao không sử dụng trực tiếp FPGA như là một sản phẩm cuối cùng của bạn, có ai cấm hay thu tiền bản quyền của chúng ta về việc đó đâu. Thực tế là FPGA rất hay được sử dụng trong các hệ thống SDR (Software Defined Radio) vì khả năng tái cấu hình giúp các chức năng của thiết bị có thể thay đổi nhanh chóng, bạn có thể hỏi rằng một hệ thống CPU/MCU/DSP cũng có thể làm được chuyện này dễ dàng? Nhưng thực ra thì có nhiều những ứng dụng tốc độ cao mà các MCU thậm chí cả các CPU/DSP trung bình cũng phải bất lực.

* Tại sao phải dùng FPGA trong khi bạn đó nắm trong tay MCU/CPU thậm chí cả các DSP cực mạnh
+ MCU/CPU/DSP vẫn cần các hardware khác bên cạnh trong các ứng dụng chuyên dụng
+ Để điều khiển VGA sử dụng CPU làm controller cần CPU với tốc độ 27Mhz hoạt động 100% CPU
+ Các ứng dụng xử lý hình ảnh/video, các ứng dụng mạng neuron,IA cần tốc độ xử lý rất lớn. Mặc dù các DSP đủ mạnh và các SoC mạnh có thể thực hiện được, nhưng sự lựa chọn còn phụ thuộc vào vấn đề kinh tế
+ Có bao giờ bạn nghĩ mình sẽ thiết kế ra 1 con CPU của chính mình, với FPGA bạn hoàn toàn có thể thực hiện điều đó
+ Đến với FPGA,bạn có cơ hội để tiếp cận gần nhất thế giới của IC
+ Bạn có thể thực hiện một hệ thống với đầy đủ CPU/Peripheral/IO… và kết nối chúng theo ý muốn,hoặc thậm chí một hệ thống đầy đủ không cần cả CPU như các Chip giải mã/nén Video/Audio, các Chip xử lý hình ảnh/giọng nói, các Chip PID Motor Controller, networking chip …

* Kit phát triển FPGA và các ứng dụng demo :
Kit Xilinx Spartan-3 FPGA Starter Kit Board (Giá $149.00)

Kit Altera Cyclone III FPGA Starter Kit (Giá $199.00)

Các Kit trên là Starter Kit, nhìn nhiều Chip vậy thôi chứ thực ra chỉ có mỗi con FPGA là chính thôi,mấy con còn lai chủ yếu là SRAM/DRAM, Flash, Bộ config Nguồn và các ngoại vi…
Dưới đây là các Kit giáo dục rất mạnh của Altera (DE1,DE2) đã được dùng phổ biến ở nhiều trường đại học trên thế giới (Kit do Terasic thiết kế chế tạo).Nếu ai đang là sinh viên điện tử năm 3,4 ở các trường ĐH BK TPHCM và ĐH Tự Nhiên TPHCM thì có lẽ biết rõ về loại Kit này.

Altera DE1 – Development and Education Board (Giá $150.00)


Altera DE2 – Development and Education Board (Academic price :$269)

Các Kít phát triển FPGA thì đa dạng và dùng cho nhiều mục đích khác nhau nhưng đều gồm 5 phần chính : FPGA, Bộ nhớ (SRAM/DRAM/Flash), Ngoại vi, bộ cấu hình (Configuration device), và bộ nguồn.
Nhìn hai loại board ở trên, 1 cái thì mạch diện,IC dày đặc,1 cái thì nhìn đơn giản, nhưng thực thế chỉ là các Kit DE có các ngoại vi đi kèm để dùng cho các mục đích phát triển khác nhau, còn con chip FPGA thì cũng tương đượng thôi, thâm chí còn yếu hơn các Starter Kit.

Các ứng dụng demo của Kit phát triển Altera DE1,DE2






* Nếu các bạn có câu hỏi gì xin cùng nhau thảo luận trong luồng này

PS: Bài viết này được viết dựa trên kinh nghiệm và kiến thức của tôi về ASIC và FPGA nên không tránh khỏi nhiều sai xót,mong nhận được sự góp ý từ các bạn quan tâm.

Tài liệu tham khảo lấy từ các website :
– web altera.com
– xilinx.com
– terasic.com

Theo sunjsc.com

Ứng dụng ngôn ngữ VHDL trong thiết kế phần cứng

Ngôn ngữ VHDL được cung cấp để hổ trợ phát triển các hệ thống phần cứng dựa trên các loại mạch(chip) tích hợp tốc độ cao(VHSIC-Very High Speed Integrated Circuit). Việc sử dụng các loại chíp kiểu này đã thay thế dần các IC logic mà thường được sử dụng trong việc thiết kế mạch số, đem lại nhiều lợi ích và thuần tiện trong việc phát triển các hệ thống số mà phương thức thiết mạch số truyền thống khó hoặc không thể thực hiện được.

VHDL là 1 loại ngôn ngữ mô tả phần cứng. Hiện nay có nhiều loại ngôn ngữ mô tả phần cứng đang được sử dụng như là verilog hay ABEL… mỗi ngôn ngữ có nhưng ưu điểm và thuận tiện cho người sử dụng. Ở đây chúng ta không so sánh giữa các ngôn ngữ miêu tả phần cứng với nhau. Việc quan trong là phải nắm bắt và sử dụng thành thao 1 loại ngôn ngữ khi mới bắt đầu tiếp cận với việc thiết kế hệ thống mạch số dựa trên các chip tích hợp.
VHDL không phải là 1 ngôn ngữ lập trình tuy vậy nó cung được hỗ trợ các cấu trúc, cú pháp như giống như những ngôn ngữ lập trình thông dụng như C hay Basic. Do vậy VHDL sẽ phải lược bỏ đi những phần không thích hợp khi áp dụng cho việc thiết kế 1 phần cứng chứ không phải 1 phần mềm. VHDL là ngôn ngữ miêu tả phần cứng khá thông dụng có thể tương thích với nhiều môi trương ( công cụ) phát triển cho chip của nhiều hãng sản xuất chip khác nhau.
Sử dụng VHDL để miêu tả phần cứng tức là chỉ rõ cách thức giao tiếp của mạch cứng với các mạch bên ngoài và hoạt động, cấu trúc bên trong của mạch để nó có thể đáp ứng và xử lý các tín hiệu khi lắp ghép nó vào 1 hệ thống . Cách thức giao tiếp bao gồm việc thống kê số lượng các chân giao tiếp với mạch bên ngoài và định dạng cho chúng là chân nhập hay là xuất tín hiệu.
Sự miêu tả ở đây có các mức như miêu tả cấu trúc (Structural) và miêu tả cách thức, đặc tính (behavioral)
Miêu tả cấu trúc hệ thống tức là miêu tả hệ thống thông qua tập hợp các cổng logic cơ bản hoặc các thành phần được hỗ trợ và cách thức kết nối giũa các thành phần đó với nhau. Hình thức miêu tả này đã được sử dụng nhiều trong các công cụ thiết kế phần cứng truyền thống. còn đối với ngôn ngữ VHDL thì việc sử dụng cách thức miêu tả này thông qua các toán tử logic (AND, OR,..) tương ứng với các thành phần logíc cơ bản kết hợp các toán tử này để hình thành lên cấu trúc số.
Hình thức miêu tả cao nhất là behavioral. Hình thức này sẽ chỉ cách thức xử lý tín hiệu khi nó đi qua hệ thống. Mô tả behavioral được chia thành 2 hình thức miêu tả đó là dataflow và Algorithmic. Người thiết kế có thể kết hợp các hình thức miêu tả này với nhau trong file thiết kế của mình.
Mức mô tả behavioral thường được người thiết kế sử dụng do với hình thức mô tả này thì người thiết kế không phải quan tâm nhiều đến cấu trúc phần cứng bên trong của hệ thống mà chỉ tập chung vào mổ tả hay định hình việc xử lý dữ liệu của hệ thống. Còn đối với mức mô tả cấu trúc thì đòi hỏi người thiết kế phải nắm bắt và xây dựng cấu trúc của hệ thống thông qua các phần tử logic cơ bản, khi đó đòi hỏi người thiết kế phải có rất nhiều kinh nghiệm trong việc thiết kế mạch số và quá trình phân tích hệ thống rất khó khăn. Thông thường người thiết kế thường sử dụng kiểu mô tả này để ghép nỗi các phần đã được thiết kế của hệ thống vời nhau.
Cấu trúc của 1 file thiết kế dữa trên ngôn ngữ VHDL thông thường bao gồm 3 phần
-phần khai báo các thư viện sử dụng trong thiết kế.
-phần khai báo đối tượng thiết kế .
-phần mô tả cấu trúc của đối tượng.
Trên 1 bản thiết kê có thể có nhiều đối tượng thiết kế được lặp ghép với nhau. Mỗi đối tượng (entry) có thể hiểu như là 1 module mạch hay 1 tổ hợp logic. Các chân giao tiếp của đối tượng phải được định nghĩa trong phần khai báo đối tượng.
Trong phần mô tả cấu trúc của đối tượng thì người thiết kế sẽ sử dụng các mức mô tả đã đề cập phía trên để mô tả cấu trúc bên trong hay cách thức xử lý tín hiệu của đối tượng thiết kế.
Bài viết này không đề cập sâu về cú pháp hay kỹ thuật lập trình của ngôn ngữ VHDL mà chỉ trình bày một cách tổng quan về cách thức sử dụng ngôn ngữ miêu tả trong thiết kế phần cứng có sử dụng các vi mạch tổ hợp.
Trong những bài viết tiếp theo sẽ đề cập sâu hơn về nhưng vấn đề này.

Giới thiệu ngôn ngữ mô phỏng phần cứng VHDL- phần 2

II.Ngôn ngữ mô phỏng phần cứng VHDL.

1. Giới thiệu.

VHDL là viết tắt của cụm từ Very High Speed Intergrated Circuit Hardware Description Language-ngôn ngữ mô phỏng phần cứng cho các mạch tích hợp tốc độ rất cao. VHDL là ngôn ngữ mô phỏng phần cứng được phát triển dùng cho chương trình VHSIC (Very High Speed Intergrated 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 phát triển 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ười VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào 7/1983. Phiên bản đầu tiên được công bố vào 8/1985. Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn. 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 tài liệu đó kỹ lưỡng. 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.

Trước khi VHDL ra đời, có nhiều ngôn ngữ mô phỏng phần cứng được sử dụng nhưng không có một tiêu chuẩn thống nhất. Các ngôn ngữ mô phỏng phần cứng đó được phát triển để phục vụ các bộ mô phỏng chạy chúng. Vì các ngôn ngữ mô phỏng phần cứng đó được các nhà cung cấp thiết bị phát triển, nên mang các đặc trưng gắn với các thiết bị của nhà cung cấp đó và thuộc sở hữu của nhà cung cấp.

Trong khi đó, 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ế, bộ mô phỏng 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 vẫn sử dụng một ngôn ngữ duy nhất.

VHDL có một số ưu điểm hơn hẳn các ngôn ngữ mô phỏng phần cứng khác 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 không thuộc sở hữu của bất kỳ cá nhân hay tổ chức nào. Do đó VHDL được 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. Ðây là một ưu điểm nổi bật của VHDL, giúp VHDL trở nên ngày càng phổ biến.

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 như 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 có sẵn. VHDL cũng hỗ trợ cho nhiều loại công nghệ 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 logic ngẫu nhiên. Như vậy VHDL có thể phục vụ tốt cho nhiều mục đích thiết kế khác nhau, từ việc thiết kế các phần tử phổ biến đến việc thiết kế các IC ứng dụng đặc biệt (Application Specified IC).

Ðộ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 vào công nghệ chế tạo phần cứng nào được sử dụng (dùng CMOS, nMOS, hay GaAs). Ðây cũng là một ưu điểm quan trong của VHDL nó cho phép người thiết kế không cần quan tâm đến công nghệ phần cứng khi thiết kế hệ thống, như thế khi có một 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ế.

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ố (hộp đen) 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ả ở mức cao và các hệ con được mô tả chi tiết.

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ô phỏng đá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 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; trong khi các hệ con đó được thiết kế độc lập.

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ể 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à chi sẻ thiết kế. VHDL cũng cho phép dùng lại các phần đã có sẵn.

Trên đây ta đã xem xét một số đặc điểm của ngôn ngữ VHDL, sau đây ta sẽ đi sâu vào xem xét một số khái niệm thiết kế cơ bản trong VHDL.

2. Cấu trúc một mô hình hệ thống mô tả bằng VHDL.

Thông thường một mô hình VHDL bao gồm ba phần: thực thể, kiến trúc và các cấu hình. Trong một số trường hợp mô hình còn có thêm phần các môi trường kiểm tra.

2.1 Thực thể (Entity).

Khai báo thực thể trong VHDL là câu lệnh định nghĩa các chỉ tiêu phía ngoài của một phần tử hay một hệ thống. Các thông tin có trong phần khai báo thực thể cho phép kết nối phần tử (hệ thống) mà thực thể đó đại diện với các phần tử (hệ thống) khác. Thực chất việc khai báo thực thể chính là khai báo giao diện của hệ thống với bên ngoài. Hoạt động thực chất của hệ thống không được mô tả trong khai báo thực thể. Dưới đây là một ví dụ khai báo thực thể cho một cổng NAND.

ngonngu2.jpg (16841 bytes)

Câu lệnh LIBRARY IEEE và USE IEEE.std_logic_1164.ALL cho phép thực thể sử dụng các định nghĩa trong thư viện về các tiêu chuẩn của IEEE. Khai báo thực thể bao gồm tên của thực thể và một tập các cổng và phần chung. Trong đó phần chung GENERIC là các hằng số được truyền cho phần tử (hệ thống). Phần chung có thể coi là các tham số định trước của phần tử, chẳng hạn như độ trễ. Các cổng là phần giao diện vào ra của phần tử. Các cổng có thể tương ứng với các chân IC, hay các đầu nối trên bảng mạch. Các cổng được khai báo là cổng vào, cổng ra, cổng hai chiều hay bộ đệm.

2-2.Kiến trúc (Arrchitecture).

Một khai báo thực thể đều phải đi kèm với ít nhất một kiến trúc tương ứng. VHDL cho phép khai báo nhiều kiến trúc cho một thực thể. Một khai báo kiến trúc có thể bao gồm các khai báo về các tín hiệu bên trong, các phần tử bên trong hệ thống, hay các hàm và thủ tục mô tả hoạt động của hệ thống. Có hai cách mô tả kiến trúc của một phần tử (hệ thống) đó là mô tả theo mô hình hoạt động hay mô tả theo mô hình cấu trúc. Tuy nhiên một hệ thống có thể bao gồm cả mô tả theo mô hình hoạt động và mô tả theo mô hình cấu trúc.

2-2-1.Mô tả kiến trúc theo mô hình hoạt động.

Mô hình hoạt động mô tả các hoạt động của hệ thống (hệ thống đáp ứng với các tín hiệu vào như thế nào và đưa các kết quả gì ra đầu ra) dưới dạng các câu lệnh cảu ngôn ngữ lập trình bậc cao. Các câu lệnh đó có thể là PROCESS, WAIT, IF, CASE, FOR-LOOP…Ví dụ, kiến trúc của cổng NAND nói trên có thể mô tả theo mô hình hoạt động như sau.

ngonngu3.jpg (9318 bytes)

Hình 4. Mô tả kiến trúc cổng NAND theo mô hình hoạt động.

Ta thấy kiến trúc của phần tử NAND có một lệnh gán tín hiệu mô tả chức năng của phần tử. Câu lệnh này được thực thi khi một trong hai cổng a,b thay đổi giá trị. Và câu lệnh gán có độ trễ, tức là tín hiệu ở bên vế trái sẽ thay đổi tương ứng sau thời gian trễ.

Theo DLBKHN.COM.VN

Giới thiệu ngôn ngữ mô phỏng phần cứng VHDL- phần 1

Hiện nay các mạch tích hợp ngày càng thực hiện được nhiều chức năng hơn, do đó chúng ngày càng trở nên phức tạp hơn. Các phương pháp thiết kế mạch truyền thống như dùng 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ế. Hơn nữa các mạch thiết kế ra yêu cầu phải được thử nghiệm kỹ lưỡng trước khi đưa vào chế tạo hàng loạt.

Hơn nữa cần phải xây dựng một bộ tài liệu hướng dẫn vận hành hệ thống hoàn chỉnh dễ hiểu và thống nhất. Vì thế người ta thường sử dụng các ngôn ngữ mô phỏng phần cứng làm phương tiện thiết kế, mô phỏng thử nghiệm các hệ thống số.

Bài báo này sẽ giới thiệu về một ngôn ngữ mô phỏng phần cứng thông dụng hiện nay; Ðó là ngôn ngữ mô phỏng phần cứng dùng cho mạch tích hợp tốc độ cao (Very high speed Intergrated Circuit Hardware Description Language).

I – Ngôn ngữ mô phỏng phần cứng (HDL).
1. Các phương pháp thiết kế truyền thống.

a/ Phương pháp thiết kế dùng hàm Boolean.

Tất cả các mạch dựa trên các phần tử logic cơ bản gồm cổng logic và các mạch flip-flop đều có thể thiết kế bằng các hàm Boolean. Có nhiều phương pháp đã được sử dụng để tối thiểu hoá hàm Boolean nhằm tăng tính hiệu quả sử dụng các phần tử logic, chẳng hạn như phương pháp dùng bìa cácnô. Về mặt lý thuyết bất kỳ hệ thống số nào cũng có thể biểu diễn dưới dạng các hàm Boolean. Nhưng việc tối thiểu hoá cũng như xử lý hàng nghìn hàm logic rõ ràng là không thực tế. Trong khi các yêu cầu thiết kế hệ thống hiện nay đòi hỏi tới hàng nhiều nghìn hàm Boolean.

ngonngu.jpg (12236 bytes)

Hình 1. Minh hoạ cho phương pháp thiết kế bằng hàm Boolean.

b/ Phương pháp thiết kế dựa trên sơ đồ (là sự mở rộng của phương pháp thiết kế bằng hàm Boolean.)

Trong phương pháp này, người thiết kế có thể sử dụng thêm các mạch chức năng thông dụng khác ngoài các phần tử cơ bản là cổng và flip-flop. Như vậy, phương pháp này cho phép thiết kế thiết kế hệ thống một cách có cấu trúc. Phương pháp thiết kế dựa trên sơ đồ được dùng phổ biến và có rất nhiều phần mềm thiết kế cung cấp cho người thiết kế một giao diện thiết kế đồ hoạ thuận tiện. Trong nhiều năm phương pháp này là phương pháp được sử dụng chủ yếu trong ngành công nghiệp chế tạo phần cứng số.

ngonngu1.jpg (19077 bytes)

Hình 2. Minh hoạ cho phương pháp thiết kế dựa trên sơ đồ.

c/ Nhược điểm của các phương pháp thiết kế truyền thống.

Mặc dù có ưu điểm là dễ hiểu và dễ sử dụng, phương pháp thiết kế dùng hàm Boolean và phương pháp thiết kế dựa trên sơ đồ có một số nhược điểm. Nhược điểm lớn nhất của các phương pháp này là chúng chỉ mô tả hệ thống dưới dạng mạng các phần tử nối với nhau. Nhìn vào một hệ thống được mô tả bằng hai phương pháp trên (dưới dạng hàm Boolean hay dạng sơ đồ) ta không thể lập tức chỉ ra được các chỉ tiêu và chức năng chung nhất của hệ thống. Ðể thiết kế một hệ thống bằng phương pháp truyền thống, 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 hệ thống bằng hàm Boolean, sau đó chuyển từ hàm Boolean sang sơ đồ mạch của hệ thống. Cũng tương tự khi cần hiểu được một hệ thống người phân tích cần phân tích sơ đồ mạch của hệ thống chuyển nó thành các hàm Boolean sau đó mới lập lại được các chức năng, hoạt động của hệ thống. Và 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. ở đây 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 (dùng công cụ CAE – Computer Aided Tool) 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 của phương pháp thiết kế truyền thống là sự giới hạn trong độ phức tạp của hệ thống. Phương pháp dùng hàm Boolean chỉ có thể dùng để thiết kế các hệ thống lớn nhất biểu diễn bởi vài trăm hàm. Phương pháp dựa trên sơ đồ chỉ có thể dùng để thiết kế lớn nhất chứa tới 6000 phần tử.

2.Ngôn ngữ mô phỏng phần cứng (HDL).

Ngôn ngữ mô phỏng phần cứng giải quyết được nhược điểm lớn nhất 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 của hệ thống) sang tập hợp các hàm logic bằng tay thì bước chuyển đổi đó hoàn toàn không cần thiết khi dùng ngôn ngữ mô phỏng phần cứng. 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 tự động. Ngôn ngữ mô phỏng phần cứng được dùng nhiều để thiết kế cho các thiết bị logic lập trình được (PLD-Programmable Logic Device) từ loại đơn giản đến các loại phức tạp như ma trận cổng lập trình được (Field Programmable Gate Array).

Theo DLBKHN.COM.VN

Altera và những vi mạch khả lập trình đầu tiên

Được thành lập 1983 do Robert Hartmann, Michael Magranet, James Sansbury và Paul Newhagen Altera (ALTR) được lấy tên chính thức năm 1984, cũng chính trong năm này công ty đã giới thiệu những con chip đầu tiên của mình.

Altera  là  công ty đi đầu trong lĩnh vực lập trình cho những mạch logic, với hệ thống gồm  nhiều công ty chip bán dẫn, cùng với những sản phẩm của mình Altera đang dần chiếm lĩnh thị trường chip bán dẫn và vi mạch khả lập trình trên thế giới.

Hiện nay Altera được biết đến với FPGA, CPLD và các cấu trúc mạch ASIC cho phép lập trình trên nó. Với số lượng khách hàng ngày càng tăng, doanh thu trong 2006 của Altera là 1,29 tỉ USD. Trụ sở chính của Altera đặt tại San Jonse, California cùng với đội ngũ  khoảng 2 600 nhân viên tại các công ty trên 19 quốc gia.

Mới đây nhất Altera giới thiêu kit phát triển với chip Cyclone(R) III FPGA cho phép lập trình các ứng dụng Multimedia, Ethernet, lập trình giao tiếp với các thiết bị ngoại vi như USB, Memory…

Tại Viêt Nam, ngày 4 tháng 6 vừa rồi Altera tuyên bố thành lập một trung tâm công nghệ ở TP. Hồ Chí Minh để hỗ trợ mạng lưới phát triển chip trên khắp toàn cầu của công ty và đây cũng chính là mục tiêu để phát triển đội ngũ kỹ sư trên toàn thế giới của Altera. Hiện tại Altera đang hợp tác đào tạo và đầu tư cơ sở vật chất: phòng Lab, các Board mạch để phát triển ứng dụng, bộ công cụ phần mềm kèm theo… để sinh viên có thể học tập và nghiên cứu tại khoa Công Nghệ Thông Tin của Trường Đại Học Bách Khoa TP. Hồ Chí Minh. Sự hợp tác này còn đánh dấu một bước tiến mới trong ngành công nghiệp phần cứng ở Viêt Nam với chip và những vi mạch khả lập trình.

Theo DLBKHN.COM.VN

Tổng quan về công nghệ FPGA

Bạn muốn thiết kế một đầu đọc thẻ nhớ 5 trong 1? Dễ thôi, bạn mua 1 bộ điều khiển cho MMC, 1 bộ điều khiển cho SD,… rồi gắn tất cả lên trên 1 bo mạch? Nhưng tại một thời điểm chỉ có thể có (và chỉ cần) một loại card được sử dụng trong đầu đọc. Phải chăng là 1 sự lãng phí? Lãng phí tài nguyên phần cứng, lãng phí công suất tiêu thụ? Tại sao bạn không nghĩ đến FPGA?

Kiến trúc mạch FPGA

Với FPGA, khi bạn cho thẻ nhớ MMC vào, đầu đọc hoạt động theo chuẩn của MMC và khi bạn dùng thẻ SD, FPGA trong đầu đọc sẽ được tự cấu hình lại theo chuẩn của SD. Như vậy bạn đã tiết kiệm được tài nguyên cho hệ thống bởi chỉ với 1 platform bạn thực hiện được nhiều tác vụ và tất nhiên cả công suất tiêu tán trên nó. Trên thực tế không ai làm như vậy vì như thế là đem dao mổ trâu đi giết gà và còn phải giải quyểt vấn đề về mức điện áp logic của các chuẩn. Ý tưởng này chỉ tồn tại trong các hobby project 😀

Vậy FPGA là gì?

FPGA là 1 chip silicon chứa trong nó rất nhiều “khối logic” có thể tái cấu hình CLB (Configurable Logic Blocks) được liên kết với nhau thành bằng các liên kết khả trình (Programmable Interconnect). Các khối vào ra được phân bố xung quanh chip tạo thành các liên kết với bên ngoài. Bên trong khối logic CLB có bảng LUT (Look-Up Table) và các phần tử nhớ (FlipFlop hoặc bộ chốt). Bảng LUT với nhiều đầu vào và 1 đầu ra tạo thành 1 mạch logic tổ hợp nhỏ, còn các phần tử nhớ dành cho logic synchronous và sequential.

LUT (Look-Up Table)

Bạn sẽ băn khoăn 1 CLB với 1 LUT với 4 hay 6 đầu vào thì làm được gì cho bạn? Nhưng 1 chip FPGA có chứa cỡ hàng nghìn, chục nghìn thậm chí lên đến hàng trăm nghìn CLB, nên nó có thể làm được rất nhiều chức năng phức tạp và bạn không phải quá quan tâm nội dung bên trong 1 CLB, bên trong 1 LUT như thế nào? Việc đó đã có bộ công cụ phần mềm chuyên dụng thực hiện cho bạn? Tất cả những gì bạn cần phải làm trước tiên là lập trình cho FPGA và để cho công cụ thực hiện các giai đoạn còn lại. Tất nhiên bạn phải tuân thủ chu trình thiết kế và thoả mãn các yêu cầu của công cụ.

FPGA Design Flow

Bạn yêu thích FPGA?

Hãy nhanh lên chọn và học một ngôn ngữ lập trình mô tả phần cứng HDL. Giới kỹ thuật ở Bắc Mỹ thì chuộng Verilog còn ở châu Âu lại khoái VHDL mặc dù cả 2 đều được sinh ra ở Mỹ. Đây cũng là 2 ngôn ngữ thông dụng nhất hiện nay. Ngoài ra còn có ABEL (được dùng từ lâu nhưng không phổ biến) và gần đây systemC. Bản thân tác giả không thể khuyên bạn nên dùng ngôn ngữ nào nhưng có một điều chắc chắn là Xilinx ISE và Altera Quartus đều hỗ trợ VHDL và Verilog.

Phần lớn các sản phẩm FPGA trên thị trường hiện nay đều dựa trên công nghệ SRAM với 2 hãng sản xuất lớn nhất là Xilinx và Altera. Dòng FPGA cao cấp nhất của Xilinx là Virtex với sản phẩm mới nhất là Virtex 5 (ra mắt trung tuần tháng 5/2006) còn với Altera là người anh cả Stratix 3 (tháng 11/2006). Ngoài ra còn có các hãng khác sản xuất FPGA nhưng với mục đích chuyên dụng (Atmel, Actel, Lattice,..)

Theo DLBKHN.COM.VN