Một số nguyên tắc khi đặt tên tín hiệu, biến trong VHDL và Verilog

 Đây là 1 chia sẻ của 1 Digital Designer có kinh nghiệm lâu năm. Những quy tắc này được khuyến khích cho cả VHDL và Verilog để đảm bảo tính nhất quán. Ta sẽ được 3 lợi ích chính sau khi áp dụng những quy tắc này:

1. Code dễ đọc và dễ hiểu hơn

2. Cải thiện tư duy khi viết code

3. Code sẽ ít bị lỗi hơn

Về vấn đề đặt tên các tin hiệu, biến:

Tiền tố (Prefixes): ta sẽ thêm các tiền tố sau ở trước tên tín hiệu, biến tương ứng

    i_ Input signal
    o_ Output signal
    r_ Register signal (has registered logic)
    w_ Wire signal (has no registered logic)
    c_ Constant
    g_ Generic (VHDL only)
    t_ User-Defined Type


Tiền tố i_ và o_:

Đây là phong cách quan trọng nhất mà bạn nên áp dụng! Quá nhiều kỹ sư thiết kế không cho biết tín hiệu của họ là đầu vào hay đầu ra từ một entity/mô-đun. Có thể rất khó khăn và khó chịu khi xem qua code để xác định hướng của tín hiệu. Ngoài ra, một tín hiệu được đặt tên là "data" và là một đầu ra sẽ khó tìm thấy trong mã của bạn thông qua tìm kiếm hơn nhiều so với một tín hiệu được đặt tên là "o_data". Ví dụ: i_address, o_data_valid.

tiền tố r_ và w_

Đây là phong cách quan trọng thứ hai mà bạn cần sử dụng. Việc chỉ ra tín hiệu của bạn là thanh ghi hay dây là cực kỳ quan trọng để viết mã tốt. Verilog hay ở chỗ nó buộc bạn phải khai báo tín hiệu của mình dưới dạng reg hoặc wire, nhưng VHDL không có yêu cầu đó! Do đó phong cách này đặc biệt quan trọng đối với các lập trình viên VHDL. Tất cả các tín hiệu được khai báo với r_ phải có các điều kiện ban đầu. Tất cả các tín hiệu được khai báo với w_ không bao giờ được xuất hiện ở phía bên trái của toán tử gán trong một quy trình tuần tự (trong VHDL) hoặc một khối luôn luôn có xung nhịp (trong Verilog). Ví dụ: r_Row_Count, w_Pixel_Done.

tiền tố c_, g_ và t_

Đây là những chỉ báo hữu ích khi viết mã. c_ cho biết rằng bạn đang tham chiếu đến một hằng số trong VHDL hoặc một tham số trong Verilog. g_ được sử dụng cho tất cả các generic VHDL. t_ cho biết rằng bạn đang xác định kiểu dữ liệu của riêng mình. Tôi thấy những điều này hữu ích. Ví dụ: c_NUM_BYTES, t_MAIN_STATE_MACHINE. Đối với máy trạng thái, tôi thích sử dụng tất cả các chữ cái viết hoa ... ví dụ: LÀM SẠCH, XONG, LÀM SẠCH. Trong quá khứ, tôi đã sử dụng s_ để chỉ trạng thái nhưng tôi đã chuyển từ đó đi. Tùy chọn thay đổi.

Lưu ý về Viết hoa:

Bạn có muốn viết hoa tên tín hiệu hay không là tùy thuộc vào bạn. Như bạn có thể thấy trong các ví dụ trên, tôi viết hoa tất cả các tín hiệu của mình không phải là đầu vào hoặc đầu ra, ngoại trừ tiền tố. Nếu bạn muốn đặt tên cho tín hiệu là r_Row_Count hoặc r_row_count hơn là r_ROW_COUNT, điều đó tùy thuộc vào bạn. Tôi muốn khuyên bạn nên kiên định! VHDL không phân biệt chữ hoa chữ thường, vì vậy r_ROW_COUNT giống với r_Row_Count, nhưng điều này không đúng trong Verilog. Verilog phân biệt chữ hoa chữ thường, vì vậy việc duy trì các quy tắc về viết hoa là rất quan trọng! Bạn không muốn vô tình tạo ra hai tín hiệu khác nhau khi bạn chỉ tạo ra một tín hiệu hoặc bạn sẽ có một khoảng thời gian rất tồi tệ.

Lưu ý về việc khởi tạo tín hiệu:

Có một quan niệm sai lầm khá phổ biến rằng FPGA cần phải có tín hiệu đặt lại vào thanh ghi để thiết lập điều kiện ban đầu. Điều này không đúng, thanh ghi FPGA có thể có giá trị ban đầu .. Tất cả FPGA có thể được khởi tạo bằng giá trị 0 hoặc khác 0. Thực tế, phương pháp hay nhất là đặt lại càng ít Flip-Flops càng tốt trong thiết kế của bạn và thay vào đó dựa vào việc khởi tạo tất cả Flip-Flops. Lý do cho điều này là mỗi dòng đặt lại bạn thêm vào Flip-Flop sẽ lấy tài nguyên định tuyến và sức mạnh và khiến thiết kế của bạn khó đáp ứng thời gian hơn.

Quy tắc bạn nên tuân theo là: Tất cả các thanh ghi (được xác định bằng tiền tố r_) phải luôn có một điều kiện ban đầu được áp dụng cho chúng. Không có dây nào (như được xác định bằng tiền tố w_) nên BAO GIỜ có điều kiện ban đầu được áp dụng cho chúng. Khi bạn mô phỏng thiết kế của mình, tất cả các tín hiệu phải có màu xanh lục đẹp mắt trước khi bắt đầu mô phỏng. Nếu điều này là sự thật, bạn sẽ hạnh phúc hơn rất nhiều.

Các nguyên tắc trên là những gì tôi đã áp dụng trong nhiều năm Thiết kế kỹ thuật số. Tôi làm những điều này vì tôi thấy chúng rất có lợi cho chất lượng và tốc độ làm việc của tôi.

Nguồn: Coding Style Guidelines - VHDL & Verilog (nandland.com)

Nhận xét

Bài đăng phổ biến từ blog này

Sự khác nhau giữa 2 giao thức SPI và I2C

VHDL cơ bản 00: Giới thiệu ngôn ngữ VHDL