Chương3 Loại dữ liệu trong Verilog 3.1Khái quát
3.3.1 Giới thiệu
Những loại dữ liệu khác nhau trong Verilog ñược khai báo bằng phát biểu khai báo dữ liệu. Những phát biểu này xuất hiện trong những ñịnh nghĩa module trước khi sử dụng và một số trong chúng có thể ñược khai
Lâm Đức Khải University of Information Technology Page 40 báo bên trong những khối tuẩn tự ñược ñặt tên. Thêm vào ñó, những loại giá trị có thể phân biệt với những loại của dữ liệu khác, những ñặc tính phần cứng của wires so với registers cũng ñược phân biệt như là những khai báo net so với khai báo reg trong Verilog. Từ “driving” nghĩa là ñiều khiển ñược dùng trong những mô tả phần cứng ñể mô tả cách thức một giá trị ñược gán ñến một phần tử. Nets và regs là hai phần tử dữ liệu chính trong Verilog. Nets ñược ñiều khiển một cách nối tiếp từ những phép gán nối tiếp ( continuous assignments) hoặc từ những phần tử cấu trúc như module ports, gates, transistors hoặc những phần tử cơ bản do người dùng tự ñịnh nghĩa. Regs ñược ñiều khiển một cách chặt chẽ từ những khối hành vi ( behavioural blocks). Nets thông thường ñược thực thi như là wires trong phần cứng và regs thì có thể là wires hoặc phần tử tạm hoặc flip-flops (registers).
Những loại dữ liệu khác nhau trong Verilog ñược khai báo như là một trong những loại sau:
Parameter Loại này là những biểu thức giá trị hằng số ñược phân tích sau quá trình biên dịch và cho phép modules ñược gán tham số.
input , output, inout Những loại dữ liệu này ñịnh nghĩa chiều và ñộ rộng của một port.
Net Đây là loại dữ liệu dùng cho việc kết nối hoặc wire trong phần cứng với sự phân tích khác nhau.
Reg Đây là loại dự liệu trừu tượng giống như là một thanh ghi (register) và ñược ñiều khiển theo hành vi.
Lâm Đức Khải University of Information Technology Page 41 Time Đây là loại dữ liệu lưu trữ khoảng thời gian như ñộ trì hoãn và thời gian mô phỏng.
Integer Đây là loại dữ liệu số nguyên.
Real Đây là loại dữ liệu floating point hay số thực Event Đây là dữ liệu ñể chỉ ra rằng một cờ hiệu ñược bật tích cực.
Những loại dữ liệu này tất cả có thể ñược khai báo ở mức ñộ module. Những mô tả khác trong Verilog với những khả năng tạo lập mục ñích bao gồm những tác vụ, những hàm và những khối begin-end ñược ñặt tên. Nets ñược ñiều khiển không theo hành vi (non-behaviorally) nên do ñó nó không thể ñược khai báo cho những mục ñích khác. Tất cả những loại dữ liệu khác có thể ñược thể hiện trong những tác vụ và trong những khối begin- end.
3.3.2Ví dụ
input i1, i2; reg [63:0] data; time simtime;
Dòng ñầu tiên trong ví dụ trên là một dòng khai báo input, dòng thứ hai là một khai báo dữ liệu data reg 64 bit. Dòng cuối cùng là khai báo cho một biến ñược ñặt tên là simtime.
3.3.3Cú pháp
Lâm Đức Khải University of Information Technology Page 42 || = input_declaration || = output_declaration || = inout_declaration || = net_declaration || = reg_declaration || = time_declaration || = integer_declaration || = real_declaration || = event_declaration