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ố âmSử 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
endSố 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
endNơ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.
Thử thách
Hoàn thành code để testbench hoạt động.
Cần làm:
- Khai báo một số nguyên (integer) có tên i (để đếm vòng lặp for)
- 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
endmoduleBà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
1Giới thiệu
Verilog là gìPhần cứng và phần mềmModule đầu tiênChú thíchCác mức trừu tượng hóa thiết kế4Toán tử phần 1
Toán tử số họcToán tử moduloToán tử so sánhÔn tập: phép tính đơn giảnToán tử thao tác bit7Gán và cổng logic
Gán liên tụcGán bằng toán tửCác cổng nguyên thủy tích hợp sẵnCổng AND, OR, NOTCổng XOR, XNORÔn tập: mạch cổng logic10Ra quyết định
Câu lệnh ifIf và elseÔn tập: Bộ so sánh đơn giảnCâu lệnh caseCasex và casezÔn tập: Thiết kế ALU5Các toán tử, phần 2
Toán tử logicToán tử rút gọnToán tử dịch bitToán tử nốiToán tử điều kiệnÔn tập: thử thách về toán tử11Vòng lặp
Vòng lặp forVòng lặp whileVòng lặp repeatVòng lặp vô hạnCâu lệnh vô hiệu hóaÔn tập: các mẫu vòng lặp3Hệ thống số
Biểu diễn nhị phânSố có kích thướcSố không có kích thướcSố âmCác giá trị đặc biệt X và ZÔn tập: định dạng số6Module
Cấu trúc moduleCổng đầu vào và đầu raCổng vào ra hai chiềuKhởi tạo moduleÁnh xạ cổng theo tênÁnh xạ cổng theo thứ tựÔn tập: xây dựng module9Khối thủ tục
Khối alwaysKhối initialDanh sách độ nhạyPhép gán chặnPhép gán không chặnÔn tập: always và initial12Dự án bộ ghép kênh
Thiết kế bộ ghép kênh 2 thành 1Thiết kế bộ ghép kênh 4 thành 115Bộ điều khiển đèn giao thông
Xác định các trạng tháiLogic máy trạng tháiTự luyện tập: Trình biên dịch Verilog online