编码器的作用:将高低电平输出为二进制代码
常用的编码器有:普通编码器和优先编码器
8-3编码器verilog代码实现
难点:
1、if语句的判定:
①需要知道真值表
②需要知道if语句的写法,8种输出结果,需要8次if,if eles的用法需要熟练
module coder8_3;
input [7:0] a;
output [2:0] b;
wire [7:0] a;//定义输入变量类型,可以写成 input wire [7:0] a吗?
reg [2:0] b;
always@(*)
if (a[7]==1),b=3'b111;//初步的想法写成了8'b0000 0001<=000;可以直接用,这里的if没有tab格式,可以和always左对齐嘛?
//错误写法:if a[7]=1,b=[111];①使用if判定条件时,需要使用();②不能使用=,==才表示等于;③3位二进制输出是3'b111,而不是3'111;
//最开始写成if else(a[0]==1),b=3'b001;。根本不能直接写成if else,这个需要if和else中间插入语句。
else if(a[0]==1),b=3'b000;//第一个判定最容易出错,需要对真值表记清楚 else if(a[0]==1),b=3'b001;
else if(a[1]==1),b=3'b001;
else if(a[2]==1),b=3'b010;
else if(a[3]==1),b=3'b011;
else if(a[4]==1),b=3'b100;
else if(a[5]==1),b=3'b101;
else if(a[6]==1),b=3'b110;
else b=3'b000;//最后这一句很容易忘记,直接写成b=000有没有问题?
end
endmodule//最后这一句一定不能忘