Circuit design with VHDL, Volnei A Pedroni This textbook teaches VHDL using system examples combined with programmable logic and supported by laboratory exercises While other textbooks concentrate onl[.]
Trang 1Circuit design with VHDL, Volnei A Pedroni
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
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)
Trang 2II) 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 cho 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
Trang 3Ngô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).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à 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ỏang 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
Trang 4tự 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)
Trang 5Kit Altera Cyclone III FPGA Starter Kit (Giá $199.00)
Hình đã được thu nhỏ 74.29% so với nguyên gốc Click vào đây để xem hình nguyên gốc có kích thước 673 x 468.
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ế
Trang 6giớ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)
Hình đã được thu nhỏ 77.76% so với nguyên gốc Click vào đây để xem hình nguyên gốc có kích thước 643 x 514.
Altera DE2 – Development and Education Board (Academic price :$269)
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 454.
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.
Trang 7Các ứng dụng demo của Kit phát triển Altera DE1,DE2
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 274.
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 224.
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 233.
Hình đã được thu nhỏ 67.57% so với nguyên gốc Click vào đây để xem hình nguyên gốc có kích thước 740 x 490.
Trang 8Hình đã được thu nhỏ 85.47% so với nguyên gốc Click vào đây để xem hình nguyên gốc có kích thước 585 x 453.
Hình đã được thu nhỏ 67.57% so với nguyên gốc Click vào đây để xem hình nguyên gốc có kích thước 740 x 412.
Trang 9* 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
Ứng dụng ngôn ngữ VHDL trong thiết kế
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
Trang 10qua 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
Theo http://www.embeonline.com/
Giới thiệu ngôn ngữ mô phỏng phần cứng
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