Danh mục

Giáo trình Ngôn ngữ mô tả phần cứng Verilog: Phần 2

Số trang: 188      Loại file: pdf      Dung lượng: 1.17 MB      Lượt xem: 25      Lượt tải: 0    
tailieu_vip

Xem trước 10 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Tiếp nội dung phần 1 , Giáo trình Ngôn ngữ mô tả phần cứng Verilog: Phần 2 cung cấp cho người học những kiến thức như: Cấu trúc phân cấp và module; Mô hình thiết kế cấu trúc (Structural model); Mô hình thiết kế hành vi (Behavioral model); Tác vụ (task) và hàm (function). Mời các bạn cùng tham khảo!
Nội dung trích xuất từ tài liệu:
Giáo trình Ngôn ngữ mô tả phần cứng Verilog: Phần 2 Chương 5. Cấu trúc phân cấp và module Chương 5. Cấu trúc phân cấp và module 5.1 Cấu trúc phân cấp Ngôn ngữ mô tả phần cứng Verilog hỗ trợ cấu trúc phân cấp bằng cách cho phép modules được nhúng trong modules khác. Modules cấp độ cao hơn tạo thể hiện của module ở cấp độ thấp và giao tiếp với chúng thông qua các đầu vào, đầu ra và đầu vào ra 2 chiều. Các cổng vào ra có thể là vô hướng hoặc là vector. Cấu trúc phân cấp giúp người thiết kế chia một hệ thống thiết kế ra thành các module nhỏ hơn để dễ thiết kế và kiểm soát luồng dữ liệu trong quá trình thiết kế. Như một ví dụ cho hệ thống module phân cấp, hãy xem xét một hệ thống bao gồm các bảng mạch in (PCBs). 5.2 Module 5.2.1 Khai báo module Trong mục này cung cấp cú pháp thông thường cho một định nghĩa module và cú pháp cho việc cài đặt module, cùng với một ví dụ về định nghĩa module và cài đặt module. Một định nghĩa module được bao giữa bởi hai từ khóa module và endmodule. Các định danh kèm theo sau từ khóa module sẽ là tên định nghĩa của module. Danh sách các tùy chọn của tham số được định nghĩa sẽ chỉ rõ một danh sách theo thứ tự các tham số của module. Danh sách các tùy chọn của cổng hoặc khai báo cổng được định nghĩa sẽ chỉ rõ một danh sách theo thứ tự các cổng của module. Thứ tự được sử dụng trong định nghĩa danh sách các tham số trong module-parameter-port-list và trong 112 Chương 5. Cấu trúc phân cấp và module danh sách cổng có thể có ý nghĩa trong việc cài đặt các module. Các định danh trong danh sách này sẽ khai báo lại trong các câu lệnh input, output, và inout trong định nghĩa module. Khai báo cổng trong danh sách khai báo cổng sẽ không khai báo lại trong thân module. Các mục của module định nghĩa cái tạo thành module, và chúng bao gồm nhiều loại khai báo và định nghĩa khác nhau, nhiều trong số đó đã được giới thiệu. Từ khóa macromodule có thể dùng để thay thế từ khóa module để định nghĩa một module. Một quá trình thực thi có thể chọn để giải quyết module được định nghĩa bắt đầu với thừ khóa macromodule khác nhau. Cú pháp 5-1 module_declaration ::= {attribute_instance} module_keyword module_identifier [ module_parameter_port_list ] list_of_ports ; { module_item } endmodule |{ attribute_instance } module_keyword module_identifier [ module_parameter_port_list ] [ list_of_port_declarations ] ; { non_port_module_item } endmodule module_keyword ::= module | macromodule module_parameter_port_list ::= (From A.1.3 # ( parameter_declaration { , parameter_declaration } ) list_of_ports ::= ( port { , port } ) list_of_port_declarations ::= ( port_declaration { , port_declaration } ) | ( ) port ::= [ port_expression ] | . port_identifier ( [ port_expression ] ) port_expression ::= port_reference | { port_reference { , port_reference } } port_reference ::= port_identifier [ [ constant_range_expression ] ] port_declaration ::= {attribute_instance} inout_declaration | {attribute_instance} input_declaration | {attribute_instance} output_declaration module_item ::= (From A.1.4) port_declaration ; | non_port_module_item module_or_generate_item ::= { attribute_instance } module_or_generate_item_declaration | { attribute_instance } local_parameter_declaration ; 113 Chương 5. Cấu trúc phân cấp và module | { attribute_instance } parameter_override | { attribute_instance } continuous_assign | { attribute_instance } gate_instantiation | { attribute_instance } udp_instantiation | { attribute_instance } module_instantiation | { attribute_instance } initial_construct | { attribute_instance } always_construct | { attribute_instance } loop_generate_construct | { attribute_instance } conditional_generate_construct module_or_generate_item_declaration ::= net_declaration | reg_declaration | integer_declaration | real_declaration | time_declaration | realtime_declaration | event_declaration | genvar_declaration | task_declaration | function_declaration non_port_module_item ::= module_or_generate_item |generate_region | specify_block | { attribute_instance } parameter_declaration ; | { attribute_instance } specparam_declaration parameter_override ::= defparam list_of_defparam_assignments ; Ví dụ 5.1 Định dạng của một module chuẩn module tên_module (danh sách các cổng, nếu có); Khai báo port input, output, inout; Khai báo tham số Khai báo các loại dữ liệu (dữ liệu net, dữ liệu biến, ví dụ: wire, reg, integer) Gọi và gán đặc tính (instantiate) module con (sub-module) Phát biểu gán sử dụng mô hình RTL (assign) Phát biểu gán qui trình (always, initial) 114 Chương 5. Cấu trúc phân cấp và module Khai báo hàm và tác vụ Khai báo kết thúc module (endmodule) 5.2.2 Module mức cao nhất Module mức cao nhất (top-module) là module mà nó bao gồm trong văn bản gốc, nhưng nó hầu như không có một câu lệnh cài đặt nào trong bất kỳ một module nào khác. Điều này áp dụng cả khi module cài đặt tạo ra trong khối tạo mà không phải tự nó cài đặt. Một mô hình phải có ít nhất một module mức cao nhất. 5.2.3 Gọi và gán đặc tính một module (instantiate) Việc gọi và gán đặc tính module cho phép một module gọi và gán đặc tính một module khác ra để sử dụng. Các module không được định nghĩa lồng nhau. Nói cách khác, một module được định nghĩa sẽ không chứa mô tả thiết kế của một module khác trong cặp từ khóa module endmodule. Một module được định nghĩa lồng trong một module khác bằng cách gọi và gán đặc tính của module đó ra để sử dụng. Một câu lệnh gọi và gán đặc tính module sẽ tạo ra một hoặc nhiều bản sao của module được định nghĩa. Ví dụ, một module bộ đếm phải cài đặ ...

Tài liệu được xem nhiều: