Приоритетный энкодер на Verilog: 4 входа, 8-битный селектор
Проект
module pr_en (
input [7:0] a, b, c, d,
input [1:0] sel,
output reg [7:0] out
);
always @(a or b or c or d or sel) begin
if (sel == 2'b00) out <= a;
else if (sel == 2'b01) out <= b;
else if (sel == 2'b10) out <= c;
else out <= d;
end
endmodule
Аппаратная схема
Тестбенч
module tb_4to1_mux;
reg [7:0] a, b, c, d;
wire [7:0] out;
reg [1:0] sel;
integer i;
pr_en pr_en0 (.a(a), .b(b), .c(c), .d(d), .sel(sel), .out(out));
initial begin
sel <= 0; a <= $random; b <= $random; c <= $random; d <= $random;
for (i = 1; i < 4; i = i+1) begin #5 sel <= i; end
#5 $finish;
end
endmodule
Verilog
- Освоение Verilog: полное руководство по проектированию цифровых схем
- Освоение конкатенации в Verilog: практическое руководство
- Понимание назначений в Verilog: типы, синтаксис и лучшие практики
- Блокирующие и неблокирующие назначения в Verilog: ключевые различия
- Мастерство функций в Verilog для эффективного RTL дизайна
- Понимание задач (Tasks) в Verilog: отличия от функций, синтаксис и применение
- Генератор тактового сигнала в Verilog: проектирование и реализация
- Мастерство математических функций Verilog для эффективного аппаратного дизайна
- Мастерство $timeformat в Verilog: точность и контроль отображения времени
- Понимание и печать timescale в Verilog в любой области видимости