Danh mục tài liệu

Chisel - ngôn ngữ xây dựng phần cứng trong ngôn ngữ bậc cao Scala hỗ trợ mô tả mức truyền thanh ghi

Số trang: 10      Loại file: pdf      Dung lượng: 540.99 KB      Lượt xem: 20      Lượt tải: 0    
Xem trước 1 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Trong bài viết này tập trung giới thiệu các vấn đề cơ bản để người dùng tiếp cận nhanh công cụ thiết kế mới là Chisel theo cách trực quan nhất, đồng thời cũng trình bày bao quát các thành phần cần có để thiết kế các hệ thống số phổ biến hiện nay.
Nội dung trích xuất từ tài liệu:
Chisel - ngôn ngữ xây dựng phần cứng trong ngôn ngữ bậc cao Scala hỗ trợ mô tả mức truyền thanh ghi TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, Trường Đại học Khoa học, ĐH Huế Tập 21, Số 1 (2022) CHISEL - NGÔN NGỮ XÂY DỰNG PHẦN CỨNG TRONG NGÔN NGỮ BẬC CAO SCALA HỖ TRỢ MÔ TẢ MỨC TRUYỀN THANH GHI Lê Văn Thanh Vũ*, Trần Thị Kiều Khoa Điện, Điện tử & CNVL, Trường Đại học Khoa học, Đại học Huế Email: vulvt@hueuni.edu.vn Ngày nhận bài: 17/6/2022; ngày hoàn thành phản biện: 22/6/2022; ngày duyệt đăng: 4/8/2022 TÓM TẮT Trong bài báo này chúng tôi giới thiệu Chisel, là ngôn ngữ xây dựng phần cứng được nhúng trong ngôn ngữ lập trình bậc cao Scala. Ngôn ngữ này hướng đến cả hai nhóm lập trình: kỹ sư thiết kế phần cứng và lập trình viên phần mềm. Các kỹ sư thiết kế phần cứng tiến hành xây dựng các hệ thống điện tử số bằng các ngôn ngữ mô tả phần cứng (HDL như: VHDL, Verilog). Những người khác cần sử dụng các ngôn ngữ lập trình để tạo ra phần cứng. Chisel mang lại sự đột phá trong kỹ thuật lập trình, như với các ngôn ngữ hàm và hướng đối tượng để hình thành nên công cụ thiết kế số. Chisel không chỉ cho phép trích xuất mô tả phần cứng mức thanh ghi mà còn cho phép chúng ta viết đoạn mã tạo tạo ra phần cứng [3]. Nội dung chính của bài báo là trình bày tổng quan các thành phần của Chisel và định hướng sử dụng công cụ này trong chu trình nghiên cứu thiết kế phần cứng. Từ khóa: Ngôn ngữ thiết kế phần cứng, Chisel, thiết kế vi mạch, công cụ hỗ trợ thiết kế. 1. MỞ ĐẦU Lĩnh vực thiết kế phần cứng cho các hệ thống điện tử là xu hướng phát triển rất đáng được quan tâm, nhất là với các đối tượng sinh viên chuyên ngành Điện tử - Viễn thông. Hơn nữa, khi thế giới đang bị ảnh hưởng của dịch bệnh và đứt gãy chuỗi cung ứng thì sự thiếu hụt vi mạch đã và đang ảnh hưởng lớn đến rất nhiều ngành nghề sản xuất khác, như: sản xuất xe ôto, các thiết bị điện tử nghe nhìn,… Hoạt động nghiên cứu thiết kế vi mạch lại luôn cần các công cụ hỗ trợ xuyên suốt quá trình làm việc, nhưng lại khó tiếp cận vì giá thành của những công cụ này rất cao. Chisel được phát triển từ ngôn ngữ nhúng Scala hỗ trợ tối ưu cho người dùng trong hầu hết các công đoạn nghiên cứu thiết kế từ việc mô tả thiết kế bằng mã nguồn đến khả năng triển khai mô phỏng đánh giá [1][4]. Chisel cung cấp phần lớn các thành phần cơ bản phổ biến bên trong các hệ thống số, như: đường dẫn (wire), thanh ghi 109 Chisel - ngôn ngữ xây dựng phần cứng trong ngôn ngữ bậc cao Scala hỗ trợ mô tả mức truyền thanh ghi (Reg), ghép kênh (Mux). Các khối cơ bản này được hỗ trợ ở dạng biến hoặc hàm đã được tối ưu, người dùng chỉ cần khai báo đúng định dạng phù hợp với mục tiêu sử dụng. Ngoài ra, Chisel tích hợp khả năng viết kịnh bản đánh giá song song với quá trình mô tả mạch điện chức năng. Công cụ tích hợp hàm tạo lập cũng như trích xuất tín hiệu từ khối thiết kế một cách linh hoạt. Chisel còn cho phép người dùng sử dụng kịch bản đánh giá để tại ra tập tin “*.vcd” có thể quan sát được dạng sóng của tất cả các tín hiệu thành phần bên trong thiết kế bằng phần mềm “Gtkwave” [5]. Trong bài báo này tập trung giới thiệu các vấn đề cơ bản để người dùng tiếp cận nhanh công cụ thiết kế mới là Chisel theo cách trực quan nhất, đồng thời cũng trình bày bao quát các thành phần cần có để thiết kế các hệ thống số phổ biến hiện nay. Các thành phần cơ bản cấu thành nên Chisel trong hoạt động thiết kế hệ thống số sẽ được trình bày trong phần 2. Phần 3 tập trung trình bày các vấn đề liên quan đến hoạt động kiểm tra đánh giá mà Chisel cung cấp cho người sử dụng. Phần 4 là kết luận các nội dung đã trình bày trong bài báo này. 2. CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ CHISEL Chisel về cơ bản là một ngôn ngữ lập trình và sử dụng tập các nguyên tắc cơ bản để người dùng xây dựng chương trình thực hiện các nhiệm vụ chức năng cần cho mục tiêu thiết kế. Điểm khác biệt lớn nhất của Chisel với một số ngôn ngữ lập trình thông dụng là khả năng hỗ trợ xử lý song song và tổ chức khối tuần tự hoạt động theo xung nhịp hệ thống. Một điểm đáng chú ý của Chisel với người mới sử dụng là trình biên dịch sẽ tự động chèn thêm tín hiệu xung nhịp và tín hiệu tái khởi động “rst_n” trong quá trình tổng hợp mã nguồn Verilog từ mã nguồn Chisel của người sử dụng. Bằng cách tạo nên mã nguồn Verilog từ Chisel, người dùng có thể sử dụng mã nguồn này để tổng hợp lên phần cứng khi sử dụng các công cụ hỗ trợ thiết kế khác nhau[5]. 2.1. Các kiểu dữ liệu của Chisel Chisel là một ngôn ngữ lập trình, các kiểu dữ liệu được dùng để mô tả kiểu giá trị được thực thi trong các câu lệnh thành phần hoặc của các đường dây và luồng tin bên trong hệ thống số. Đối với đa số các ngôn ngữ đặc tả, kiểu dữ liệu tập trung vào định dạng vector của con số nhị phân điều này giúp cho việc thể hiện giá trị cụ thể và công cụ biên dịch dễ dàng tối ưu mạch điện. Trong Chisel, một giá trị nhị phân được biểu diễn trong kiểu BITS; giá trị nguyên được thể hiện ở dạng chuỗi bit có độ dài xác định theo dạng SInt hoặc UInt. Ngoài ra, các giá trị logic sẽ được biểu diễn bằng kiểu Bool. Để thuận tiện cho hoạt động mô tả mạch mạch, Chisel bổ sung kiểu Bundles là tập các giá trị của các trường độc lập (tương đường với kiểu cấu trúc của các ngôn ngữ lập trình) và kiểu Vecs là tập các trường cùng kiểu. 110 TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, Trường Đại học Khoa học, ĐH Huế Tập 21, Số 1 (2022) Giá trị của hằng số hoặc biến thực được biểu thị qua kiểu nguyên (interger) của Scala hoặc dạng chuỗi thông qua khởi tạo như Hình 1. Chú ý, với các giá trị dạng chuỗi dài có thể sử dụng ký tự “_” để phân cách để dễ nhận biết nhưng sẽ được bỏ q ...