Menu
CoddyTech

Số nguyên và số thực

Thuộc phần Kiến thức nền tảng trong hành trình Verilog của Coddy. Bài học 8 trên 90.

Ngoài wire và reg, Verilog còn có các kiểu dữ liệu khác dành cho số với những mục đích khác nhau.

Số nguyên

integer là biến đa dụng để đếm và tính toán.

  • Kích thước mặc định là 32 bit
  • Có dấu (có thể lưu số âm)
  • Chủ yếu dùng trong testbench và vòng lặp for

Khai báo số nguyên:

integer i;        // Biến (variable) có dấu 32 bit
integer count;    // Có thể lưu số âm

Sử dụng số nguyên:

integer i;

initial begin
  i = 0;           // Bắt đầu từ 0
  i = i + 1;       // Đếm tăng dần
  i = -5;          // Có thể lưu số âm
  $display("i = %d", i);  // In ra: i = -5
end

Số thực

real dùng cho số thực có phần thập phân.

  • Lưu trữ các giá trị phân số
  • Dùng trong các testbench để tính toán
  • Không thể tổng hợp thành phần cứng

Khai báo số thực:

real pi;           // Biến số thực
real voltage;

Sử dụng kiểu real:

real pi;

initial begin
  pi = 3.14159;               // Giá trị thập phân
  pi = 22.0 / 7.0;            // Kết quả phép chia
  $display("pi = %f", pi);    // In ra: pi = 3.142857
end

Nơi sử dụng

Trong testbench: Số nguyên và số thực thường được dùng làm biến đếm vòng lặp, để tính toán và kiểm tra giá trị mong đợi. Chúng giúp bạn viết và hiểu đoạn code kiểm thử dễ dàng hơn.

Trong phần cứng: Kiểu real không thể tổng hợp, nghĩa là không thể chuyển thành mạch thực tế. Kiểu integer có thể tổng hợp và thường được dùng làm biến đếm vòng lặp, nhưng với các tín hiệu phần cứng sẽ được đưa lên FPGA hoặc chip, hãy dùng reg và wire.

challenge icon

Thử thách

Hoàn thành code để testbench hoạt động.

Cần làm:

  1. Khai báo một số nguyên (integer) có tên i (để đếm vòng lặp for)
  2. Khai báo một số thực (real) có tên value (để tính toán)

Tự làm thử

module test;
  
  // Khai báo biến số nguyên (integer) tên i

  
  // Khai báo biến số thực (real) tên value

  
  initial begin
    i = 7;
    value = i * 0.5;
    $display("i = %0d, value = %f", i, value);
    
    $finish;
  end
  
endmodule
quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Kiến thức nền tảng

Tự luyện tập: Trình biên dịch Verilog online