verilog串并转换并串转换.doc
1.
设计名称:38译码器带使能端的
主要功能:
实现38译码功能,并且在使能段处于低电平是输出设计框图:
设计代码:
moduledecoder3_8(a,b,ena);
input[2:0]a;
inputena;
output[7:0]b;
reg[7:0]b;
always@(ena,a)
if(!ena)
begin
b=8
end
else
begin
case(a)
3b000:b=8
3b001:b=8
3b010:b=8
3b011:b=8
3b100:b=8
3b101:b=8
3b110:b=8
3b111:b=8
default:b=8
endcase
end
endmodule
仿真代码:
`timescale1ns/1ns
moduletb;
reg[2:0]a;
regena;
wire[7:0]b;
initialbegin
a=3b000;
ena=1b0;
#50;
ena=1b1;
#50;
a=3b001;
#50;
a=3b010;
#50;
a=3b011;
#50;
a=3b100;
#50;
a=3b101;
#50;
a=3b110;
#50;
a=3b111;
#50;
$stop;
end
decoder3_8udecoder3_8(
.a(a),
.ena(ena),
.b(b)
);
endmodule
仿真结果:
辅助说明:
当ena为低电平时,无论a为何值,总是输当ena为高电平时,输出即随a的数值变化而变化,当a为001时,b的值变当a为010时,b的值变这与设计时的功能是一致的。
_______________________________________________________________________________
2.
设计名称:83编码器带使能端的和优先级
主要功能:
实现83编码功能,并且在使能段处于低电平是输出为000,同时最高位的优先级最高
设计框图:
设计代码:
moduleundecoder8_3(a,b,ena);
input[7:0]a;
inputena;
output[3:0]b;
reg[3:0]b;
always@(ena,a)
if(!ena)
begin
b=3b000;
end
else
if(a[7])b=3b111;
else
if(a[6])b=3b110;
else
if(a[5])b=3b101;
else
if(a[4])b=3b100;
else
if(a[3])b=3b011;
else
if(a[2])b=3b010;
else
if(a[1])b=3b001;
else
if(a[0])b=3b000;
elseb=3b000;
endmodule
仿真代码:
moduletb;
reg[7:0]a;
regena;
wire[2:0]b;
initialbegin
a=8
ena=1b0;
#50;
ena=1b1;
#50;
a=8
#50;
a=8
#50;
a=8
#50;
a=8
#50;
a=8
#50;