主要学习任务的使用
module mux2_1
(
input wire sys_clk,
input wire sys_rst_n,
input wire [3:0] a, b, c, d,
output reg [3:0] ra, rb, rc, rd
);
reg [3:0] va, vb, vc, vd;
always@ (a or b or c or d)
begin
{va, vb, vc, vd} = {a, b, c, d};
sort(va, vc); //va和vc比较大小并互换
sort(vb, vd);
sort(va, vb);
sort(vc, vd);
sort(vb, vc);
{ra, rb, rc, rd} = {va, vb, vc, vd};
end
task sort;
inout [3:0] x, y;
reg [3:0] tmp;
if(x > y)
begin
tmp = x;
x = y;
y = tmp;
end
endtask
endmodule
仿真文件
`timescale 1ns/1ns
module tb_mux2_1();
reg sys_clk;
reg sys_rst_n;
reg [3:0] a, b, c, d;
wire [3:0] ra, rb, rc, rd;
initial
begin
sys_clk <= 1'b0;

文章描述了两个Verilog模块,用于对输入数据进行排序。第一个模块使用并行输入并立即输出排序结果,而第二个模块则在每个时钟周期接收一个串行输入位,逐步完成整个序列的排序。排序过程通过自定义的任务函数实现。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



