Đểđáp ứng sự phát triển kỹ thuật số, các công cụ thết kếđược trợ giúp bởi máy tính (CAD – computer Aided Design) được đưa vào quá trình thiết kế phần cứng. Hỗ trợ mạnh mẽ cho phương pháp thiết kế này là những ngôn ngữ mô tả
phần cứng (HDLs – Hardware Description Languages). Khái niệm HDLs được
ứng dụng rộng rãi trong thiết kế hệ thống số trong thời gian gần đây, dựa vào HDLs, công cụ hỗ trợ cho thiết kế hệ thống sốđã phát triển và được sử dụng nhiều trong thiết kế phần cứng.
Quá trình thiết kế hệ thống số: Ý tưởng thiết kế:
Trước tiên người thiết kế phần cứng phải có ý tưởng thiết kế. Sau đó, phát triển ý tưởng thiết kế thành sơ đồ khối, lưu đồ, ngôn ngữ tự nhiên. Người thiết kế
chỉ ra toàn bộ chức năng từ đầu vào đến đầu ra mà không cần chi tiết phần cứng hoặc kiến trúc của hệ thống dưới thiết kế.
Thiết kếđường dữ liệu:
Trong giai đoạn này người thiết kế chỉ rõ thanh ghi và các đơn vị logic. Những thành phần này được kết nối bằng các bus một hay hai chiều rồi điều khiển hoạt động dữ liệu giữa các thanh ghi và các đơn vị logic thông qua các bus.
Thiết kế luận lý:
Thiết kế luận lý là bước tiếp theo trong quá trình thiết kế và liên quan đến
ứng dụng các cổng và các mạch lật cơ bản cho việc cài đặt các thanh ghi dữ liệu, các bus, các đơn vị logic và phần cứng điền khiển chúng. Kết quả của giai đoạn này là một danh sách kết nối (netlist) của cổng và mạch lật. Công nghệ chế tạo các cổng và các chi tiết kỹ thuật của các mạch lật không có trong netlist này. Sau đó chuyển các netlist này thành sơ đồ hay danh sách transistor. Điều này liên quan
đến sự thay thế cổng và mạch lật bằng transistor hay các phần tử thư viện tương
ứng nhưng phải xem xét chếđộ tải và định thời.
Thiết kế vật lý:
Tối ưu luận lý: dùng để loại bỏ các biến dư thừa trong mạch. Ánh xạ công nghệđã tối thiểu số khối logic, diện tích.
Placement dùng để bố trí các khối để có tốc độ nhanh nhất. Routing kết nối các khối logic thành hệ thống số hoàn chỉnh
Chế tạo:
Sử dụng danh sách các transistor và đặc tả kỹ thuật để đốt cháy cầu chì hay nạp dữ liệu vào SRAM của thiết bị có thể lập trình hoặc tạo mặt nạ cho việc sản xuất mạch tích hợp.
Nhiều nhà sản xuất đã nghiên cứu các sản phẩm lập trình được như: FPGAs (Field Programmable Gate Arrays), CPLDs (Complex Programmable Logic Devices), vi mạch Hard Wire, Serial PROMs.
Vi mạch FPGAs gồm một ma trận các đơn vị logic. Những liên kết kim loại giữu các khối logic có thể được nối một cách tùy ý bằng các chuyển mạch có thể
lập trình được để chế tạo thành một mạch như yêu cầu. FPGAs chứa một số lượng lớn các cổng logic, các thanh ghi, các mạch vào ra tốt độ cao.
Vi mạch CPLDs chứa nhiều khối chức năng và khối chức năng ra, liên kết với nhau thông qua ma trận chuyển mạch. CPLDs là hệ thống tích hợp nhỏ từ 800
Vi mạch Hard Wire lập trình bằng mặt nạ của SRAM – dựa trên nền tảng của FPGAs. Các cổng của Hard Wire tương tự như FPGAs nhưng các phần tử
logic được liên kết bằng kim loại cốđịnh nên kích thước nhỏ và giá thành thấp. Serial PROMs là vi mạch nhớ có thể lập trình được một lần được sử dụng
để nạp dữ liệu cho SRAM FPGAs.
2.1.2 Các ngôn ngữ mô tả phần cứng:
Hiện nay có rất nhiều ngôn ngữ mô tả phần cứng được thiết kế cho mục
đích mô phỏng, thiết kế, kiểm tra:
AHPL là một HDL mô tả dòng dữ liệu. Ngôn ngữ này sử dụng tín hiệu
đồng hồđểđồng bộ các phép gán dữ liệu cho các thanh ghi và các mạch lật nhưng không hổ trợ các mạch không đồng bộ. Kiểu dữ liệu trong AHPL bị cố định và hạn chếở các kiểu bit, vector bit. Các thủ tục hay hàm chỉ thực hiện trong các đơn vị luận lý tổ hợp.
CDL (Computer Design Language) là ngôn ngữ mô tả dòng dữ liệu phát triển trong trường học, không hỗ trợ phân cách thiết kế.
CONLAN (Consensus Language) cho phép mô tả phân cách nhưng bị giới hạn sử dụng tham khảo bên ngoài.
IDL (Interactive Design Language) là ngôn ngữ sử dụng trong hãng IBM
được thiết kếđể tựđộng tạo ra các cấu trúc PLA. Nhưng nó không bao trùm mô tả
mạch tổng quát.
ISPS (Instruction Set Proccessor Specification) là ngôn ngữ mô tả hành vi cấp cao được thiết kế để tạo ra môi trường thiết kế cho phần mềm dựa trên phần cứng. Điều khiển định thời trong ISPS bị hạn chế.
TEGAS (Test Generation And Simulation) là hệ thống để tạo ra tín hiệu kiểm tra và mô phỏng mạch số.
TI – HDL (Texas Instrument Hardware Description Language) là ngôn ngữ đa cấp cho thiết kế và mô phỏng phần cứng. Ngôn ngữ này cốđịnh kiểu dữ liệu và không cho phép các kiểu dữ liệu do người định nghĩa.
VERILOG là ngôn ngữ hỗ trợ phân cấp thiết kế xuất hiện sau VHDL, dễ sử
dụng, được tiêu chuẩn hóa quốc tế.
VHDL (Very Hight Speed Intergrated Circuits Hardware Description Language) là ngôn ngữ mô tả phần cứng được công nhận tiêu chuẩn IEEE năm 1987, có đầy đủ sức mạnh cho việc mô tả và thiết kế hệ thống số ngày nay. VHDL hỗ trợ mô tả phân cấp từ hệ thống xuống tận cổng logic hay kiểu mạch, hỗ trợ đặc
điểm về thời gian, cung cấp các cấu trúc hết sức tổng quát.
2.1.3 Ngôn ngữ lập trình VHDL
VHDL là ngôn ngữ mô tả phần cứng dùng cho các mạch tích hợp tốc độ rất cao, đượ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 như là một ngôn ngữ mô tả phần cứng tiêu chuẩn và thống nhất cho phép 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ữ VHDL được ba công ty Intermetics, IBM và Texas Instruments bắt đầu nghiên cứu phát triển vào tháng 7 năm 1983. Phiên bản ưu tiên được công bố vào tháng 8-1985. Sau đó VHDL được đề xuất để tổ chức IEEE xem xét thành một tiêu chuẩn chung. 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 kỹ, lưỡng tài liệu đó. Với một ngôn ngữ mô tả 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ó hệ đượ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.
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ế, một bộ mô tả hay công nghệ phần cứng nào. Người thiết kế
ngôn ngữ duy nhất. Và khi so sánh với các ngôn ngữ mô phỏng phần cứng khác ta thấy VHDL có một sốưu điểm hơn hẳn các ngôn ngữ khác:
• Thứ nhất 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 được sự 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.
• Thứ hai là 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 ví dụ 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 sẳn có. VHDL cũng hỗ trợ cho nhiều loại công cụ 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 ngẫu nhiên.
• Thứ ba là tính độ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 tuy thuộc công nghệ chế
tạo phần cứng mới ra đời nó có thểđược áp dụng cho các hệ thống đã thiết kế.
• Thứ tư là 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ố 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ả chi tiết.
• Thứ năm là 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ô tả đá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 tiêu 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 lớn (trong đó các hệ con được thiết kếđộc lập).
• Thứ sáu là 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ể được 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à chia sẻ thiết kế. Và nó cũng cho phép dùng lại các phần đã có sẵn.
2.1.4 Ngôn ngữ VHDL cho thiết kế logic
Ngôn ngữ phần cứng:
HDL được dùng để mô tả phần cứng cho mục đích mô phỏng, tạo mẫu, kiểm tra, thiết kế và lập tài liệu. Ngôn ngữ này cung cấp một quy ước và định dạng ngắn gọn để biểu diễn phân cấp các chi tiết chức năng và nối dây cho hệ thống số, các ký hiệu thay cho sơ đồ mạch số và biểu diễn trừu tượng. Phần mềm HDL thường chứa chương trình mô phỏng (kiểm tra thiết kế) và tổng hợp phần cứng (thiết kế phần cứng tựđộng).
Ngôn ngữ mô tả hành vi:
Instruction Set Processor Specification (ISPS) là HDL mô tả hành vi các hệ
thống số. Ngôn ngữ này được C. G. Bell giới thiệu vào năm 1971. ISPS được thiết kế cho mô phong phần cứng, tựđộng thiết kế, phát sinh tựđộng phần mềm. Ngôn ngữ này là ngôn ngữ lập trình giống phần mềm nhưng nó bao gồm cấu trúc chuyển
động đặc biệt của dữ liệu các thanh ghi và các bus. Kiến trúc giống như CPU được mô tả dể dàng và hiệu quả trong ISPS. ISPS thích hợp nhất cho việc biểu diễn đầu ra của giai đoạn thiết kế hành vi của một quá trình thiết kế.
Ngôn ngữ mô tả dòng dữ liệu:
Ngôn ngữ lập trình phần cứng AHPL (A Hardware Programming Language). Ngôn ngữ này biểu diễn một tập hợp ký hiệu để trình bày phần cứng trong môi trường lý thuyết. Việc sử dụng tập hợp ký hiệu ban đầu này dẫn đến sự
phát triển ngôn ngữ phần cứng AHPL. Ngôn ngữ mô tả netlist:
Cách khác để mô tả hệ thống số này là netlist để mô tả nối kết các phần cứng của nó. Tập con của ngôn ngữ mô tả phần cứng Verilog có thể được dùng cho mục đích này. Có hai cách mô tả phần cứng: sơ đồ logic và ngôn ngữ HDL. Mỗi mô tả thích hợp với mỗi công cụ CAD tại một giai đoạn thiết kế khác nhau. Mô tả ISPS có thông tin về hành vi mức độ cao và có thể dùng như công cụ mẫu
cho người thiết kế phần cừng. Mức mô tả này phù hợp với người quản lý muốn biết về chức năng của sản phẩm cuối cùng trước khi nó được thiết kế. Mô tả
AHDL chứa nhiều thông tin kiến trúc và thích hợp hơn đối với việc mô phỏng mạch cho thiết kế và cấu trúc. Người thiết kế phần cứng có thể sử dụng mức mô phỏng phần cứng này để kiểm tra thiết kế của bộđiều khiển và đường dẫn dữ liệu. Mô tả Verilog khác với mô tả ISPS và AHPL trong đó chứa các thông tin mà công cụ CAD – Computer Aided Design có thể sử dụng để phân tích chi tiết hơn hoặc chế tạo mạch điện. Mức mô phỏng này thích hợp cho việc mô phỏng các phần tử
mẫu đã định nghĩa trước hoặc có thể là một netlist được tạo ra bởi công cụ CAD sau giai đoạn phát sinh tựđộng.
Mô tả phần cứng:
Ngôn ngữ mô tả phần cứng là các công cụ tạo mẫu để tạo ra một mẫu phần cứng, một trong những ứng dụng của tạo mẫu là để mô phỏng. Mô phỏng là sử
dụng một mẫu của hợp phần thực để phân tích cách ứng xử của nó dưới các điều kiện và kích thích cho trước. Trong môi trường thiết kế, mô tả phần cứng sử dụng các mẫu của hợp phần và các định nghĩa lấy trong thư viện mô phỏng để tạo ra một mẫu phần cứng mô phỏng. Mô phỏng được dùng để kiểm tra kết quả của bất kỳ giai đoạn thiết kế nào. Bộ mô phỏng cần tập hợp dữ liệu mô phỏng hay kích thích để mô phỏng mạch. Chương trình mô phỏng sử dụng dữ liệu này mô tả đầu vào tại thời điểm cụ thể và phát ra các đáp ứng cho mạch. Kết quả của chương trình mô phỏng được mô tả bằng dạng sóng, giản đồ thời gian, hoặc danh sách các giá trị theo thời gian.
Mô phỏng hệ thống được phân thành hai loại:
• Mô phỏng tại thời điểm cố định (Obvious): mổi thành phần được đánh giá tại thời điểm cốđịnh.
• Mô phỏng sự kiện (Event driven): mổi thành phần được đánh giá khi một trong sốđầu vào của nó thay đổi.
Sau khi mô phỏng và tổng hợp, kiểm tra là mối quan tâm của người thiết kế
hệ thống số. Các vấn đề liên quan đến việc kiểm tra bao gồm: fault collapsing, test generation, fault simulation test compaction, fault dictionaries. Mặc dù ít được quan tâm hơn so với mô phỏng và tổng hợp, nhưng người ta thực hiện nhiều cách kiểm tra dựa vào HDLs. HDLs cung cấp một dạng netlist cho mục đích phát ra kiểm tra hay mô phỏng lỗi. Các testbench để đánh giá các lỗi có thểđược lập trình trong ngôn ngữ mô tả phần cứng. Một tập con dạng sóng của ngôn ngữ mô tả phần cứng có thể dùng để biểu diễn dữ liệu kiểm tra bằng thiết bị kiểm tra hoặc tạo kích thích để mô phỏng lỗi.
2.1.5 Các phần mềm mô phỏng cho ngôn ngữ VHDL
Hiện nay có rất nhiều hãng đầu tư nghiên cứu và sử dụng ngôn ngữ VHDL
để thiết kế các mạch lập trình được theo nhiều tiêu chuẩn công nghệ khác nhau:
Exemplar logic’s leonardo:
Là một công cụ tổng hợp, tối ưu hóa và phân tích rất linh hoạt mềm dẻo. Nó được sử dụng để thiết kế các vi mạch ASICs, FPGAs, CPLDs. Người thiết kế
có thể thực hiện nhiều thiết kế trên cùng một bản thiết kế, lưu giữ và điều chỉnh bằng tay các cấp thiết kế, sử dụng ngôn ngữ mô tả phần cứng để cài đặt thiết kế. Leonardo cung cấp một môi trường thiết kế top – down bắt đầu từ VHDL hay Verilog có khả năng thông báo kết quả bằng việc sử dụng tập tin hiện thời SDF và thư viện mô phỏng Vital. Leonardo được tính hợp đầy đủ mô trường mô phỏng các kiểu công nghệ. Công cụ tổng hợp Exemplar giải quyết các mức tổng hợp tới cổng logic, tối ưu tốc độ, diện tích, ánh xạ công nghệ.
Synopsys FPGA express:
Có chức năng chuyển ngôn ngữ VHDL thành các khối logic, ánh xạ các cấu trúc logic vào thư viện công nghệ FPGA.
Synplify:
Tổng hợp mạch dùng ngôn ngữ VHDL và Verilog dễ sử dụng, tốc độ tổng hợp rất nhanh so với các công cụ tổng hợp khác. Ngõ ra là sơđồ liên kết mức cổng