Các Kiểu dữ liệu trong Verilog phổ biến
- Tập giá trị
Các giá trị được sử dụng phổ biến nhất trong Verilog:
Mức giá trị | Ý nghĩa trong mạch |
0 | Mức logic 0 quy định điều kiện sai |
1 | Mức logic 1 quy định điều kiện đúng |
X | Giá trị không xác định |
Z | Trạng thái trở kháng cao, hở mạch |
- Kiểu net
Net tập hợp tất cả các kiểu dữ liệu như: wire, wand, wor, tri, trior,….
Tưởng tượng net đơn giản chỉ là phần mô tả kết nối giữa các thành phần phần cứng
Kiểu wire là kiểu được sử dụng nhiều nhất. Nó như một sợi dây dẫn nối giữa các thành phần với nhau và nhớ rằng giá trị mặc định của kiểu wire là z.
Ví dụ:- wire a,b,c;
- assign c =a&b;
Kiểu wand nó tương tự như một cổng and mở rộng vậy “Không biết hiểu thế này đúng không nữa”. các bạn đọc ví dụ sau để hình dung nha.
Ví dụ:
- wand d;
- wire a,b;
- assign d=a;
- assign d=b;//Giá trị tương ứng của d = a&b;
Các kiểu còn lại nếu gặp các bạn có thể tìm kiếm trên mạng.
- Kiểu thanh ghi
Mô tả các phần tử lưu trữ dữ liệu.
– Từ khóa reg.
– Giá trị mặt định x.
Chú ý: Đừng nhầm lẫn thuật ngữ trong Verilog với phần cứng thật.
Trong Verilog thuật ngữ thanh ghi (register) nghĩa là một biến có thể lưu giá trị.Kiểu thanh ghi lưu trữ các con số không dấu.
Ví dụ: Khai báo biến reset để lưu trữ giá trị (trạng thái tín hiệu).- reg reset;
- initial begin // Cấu trúc này sẽ được thảo luận sau.
- reset = 1’b1; // Khởi tạo reset = 1 để reset mạch số.
- #100 reset = 1’b0; // Sau 100 đơn vị thời gian reset = 0.
- end
- Kiểu vector
– Kiểu net or reg có thể khai báo như vector (độ rộng nhiều bit).
– Nếu độ rộng không được định thì mặt định là 1-bit (scalar).
– Vector có thể khai báo [high# : low#] hoặc [low# : high#] những bit bên trái dấu ngoặc vuông luôn luôn là bit có trọng số lớn nhất.
– Trong ví dụ bên dưới bit 0 là bit có trọng số lớn nhất của virtual_addr.- wire a; // Biến net mặc định.
- wire [31:0]busA, busB, busC; // 3 bus rộng 32-bit
- reg clock; // Biến reg mặc định
- reg [0:40] virtual_addr; // virtual_addr rộng 41-bit
- Kiểu bộ nhớ
Kiểu bộ nhớ tương tự như một mảng 2 chiều trong C vậy.
Khai báo bộ nhớ: reg <chieu_rong>tenbonho<chieu_sau>
<chieu_rong> và <chieu_sau> khai báo như kiểu vector.
Truy xuất bộ nhớ: tenbonho<dia_chi>
Ví dụ:
Khai báo bộ nhớ mem1bit
reg mem1bit[0:1023];
Khai báo bộ nhớ membyte
reg [16:0]membyte[0:1023];
Truy xuất bộ nhớ membyte tại địa chỉ 969
assign rdata = membyte[969];
Tưởng tượng nếu như khai bao reg [7:0]mem[1:0] thì nó sẽ ra như thế này
Mem:
- Kiểu tham số
Verilog cho phép một hằng số được định nghĩa trong module bằng từ khóa parameter. Cái này rất quan trọng trong việc thay đổi thiết kế. Ví dụ như một bộ nhớ không muốn độ sâu là 4 nữa mà là 8 thì ta chỉ cần thay đổi thông số của parameter chứ không phải sửa trên toàn bố cục của RTL. Đây là một kiểu quan trọng của các kiểu dữ liệu trong Verilog
Ngoài ra parameter còn được sử dụng trong trạng thái máy (sẽ đề cập vào những bài sau).
Tham số không được sử dụng như một biến.
Ví dụ:- parameter width = 7; // Định nghĩa hằng số width.
- parameter data_bus = 16; // Định nghĩa độ rộng bus dữ liệu.
- //Sử dụng tham số.
- reg [width:0]addr_bus;
- Kiểu số nguyên
Là kiểu dữ liệu thanh ghi đa mục đích được sử dụng để tính toán các con số.
Từ khóa integer
Kiểu này chỉ sử dụng trong việc mô phỏng thiết kế
Số nguyên lưu trữ các con số có dấu.
Số bit mặt định là 32-bit.
Ví dụ:- integer counter; // Định nghĩa biến integer gọi là counter.
- initial
- counter = -1; // counter lưu trữ giá trị -1.
Kiểu dữ liệu thanh ghi số thực. Cũng như kiểu nguyên là một trong số những kiểu dữ liệu trong Verilog chỉ dùng trong mô phỏng.
Khai báo với từ khóa real.
Không có khai báo giới hạng bit.
Giá trị mặt định là 0.
Khi gán một số thực đến một biến nguyên thì số thực được làm tròn đến số nguyên gần nhất.
- real delta; // Định nghĩa biến real gọi là delta
- initial begin
- delta = 4e10; // delta được gán theo ký hiệu khoa học
- delta = 2.13; // delta được gán giá trị 2.13
- end
- integer i; // Định nghĩa biến integer gọi là i.
- initial
- i = delta; // i lấy giá trị 2 (làm tròn từ giá trị 2.13)
- //các kiểu dữ liệu trong verilog
Nguồn: http://laptrinhvnc.com
Bạn có đam mê ngành thiết kế vi mạch và bạn muốn có mức lương 1000 usd cùng lúc bạn
đang muốn tìm một Trung tâm để học vậy hãy đến với ngành vi mạch tại SEMICON
HotLine: 0972 800 931 or 0938 838 404 Ms Duyên