**
vivado环境下用Verilog语言实现编码器
**
编码器的分类
编码器通常分为两大类: 普通编码器和优先编码器。 其中,普通编码器对某一个给定时刻只能对一个输入信号进行编码的编码器, 它的输入端口不允许同一时刻出现两个以上的有效输入信号; 优先编码器就是对某一个给定时刻只对优先级最高的输入信号进行编码的编码器,它的输入端口允许多个输入信号同时有效。
以最简单的普通编码器为例,通常,四至二线编码器的逻辑电路符号如下图所示:
真值表为:
不难看出该编码器的工作原理为:编码器将对四个输入信号进行编码操作,然后以两位二进制码的形式输出,这里输入信号为低电平有效。
*
Verilog代码实现
module coding(q,d); //module表示新建一个函数模块,在这个模块结束时要用endmodule结尾
input[3:0]d; //定义输入端口
output[1:0] q; //定义输出端口
reg[1:0] q; //分配寄存器
always@(d) begin
case(d) //用case...endcase语句实现通过输入d给输出q赋值的功能
4'b0111: q<=2'b11;
4'b1011: q<=2'b10;
4'b1101: q<=2'b01;
4'b1110: q<=2'b00;
default: q<=2'bzz;
endcase
end
endmodule
配置管脚
在vivado环境下用Verilog语言实现功能需要配置管脚,其中配置管脚的格式为:
set_property -dict {PACKAGE_PIN P17 IOSTANDARD LVCMOS33} [get_ports clk ]
其中,’‘set_property -dict {PACKAGE_PIN ‘‘后面接具体的管脚(跟开发板对应起来),’‘IOSTANDARD LVCMOS33’‘是指所使用的芯片产品系列,’’ [get_ports’'后面接在工程文件中对应的实际功能接口。
这里仅仅给出配置管脚的格式,其余不再赘述。