首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

3-8译码器的几种Verilog HDL代码描述方法

3-8译码器的几种Verilog HDL代码描述方法

以低电平输出为例:

第一种:case语句

`timescale 10ns/1ns

module decode3_8(data_out,data_in,enable) ;

input [2:0] data_in;

input enable;

output [7:0] data_out;

reg [7:0] data_out;

always @(data_in orenable)

begin

      if (enable==1)

            case (data_in )

            3'b000: data_out=8'b11111110;

            3'b001: data_out=8'b11111101;

            3'b010: data_out=8'b11111011;

            3'b011: data_out=8'b11110111;

            3'b100: data_out=8'b11101111;

            3'b101: data_out=8'b11011111;

            3'b110: data_out=8'b10111111;

            3'b111: data_out=8'b01111111;

            default: data_out=8'bxxxxxxxx;

            endcase

      else

            data_out=8'b11111111;

end

endmodule

第二种:if-else if语句

`timescale 10ns/1ns

module decode3_8(data_out,data_in,enable) ;

input [2:0] data_in;

input enable;

output [7:0] data_out;

reg [7:0] data_out;

always @(data_in orenable)

begin

      if (enable==1)

             if(data_in==3'b000)

data_out=8'b11111110;

             else if(data_in==3'b001)

data_out=8'b11111101;

             else if(data_in==3'b010)

data_out=8'b11111011;

             else if(data_in==3'b011)

data_out=8'b11110111;

             else if(data_in==3'b100)

data_out=8'b11101111;

             else if(data_in==3'b101)

data_out=8'b11011111;

             else if(data_in==3'b110)

data_out=8'b10111111;

             else if(data_in==3'b111)

data_out=8'b01111111;

             else

data_out=8'bxxxxxxxx;

      else

             data_out = 8'b11111111;

end

endmodule

第三种:算法实现,但是不可综合

`timescale 10ns/1ns

module decode3_8(data_out,data_in,enable) ;

input [2:0] data_in;

input enable;

output [7:0] data_out;

reg A=8’b0000_0001;

assigndata_out=(enable)?(~(A<<data_in-1)):8'b1111_1111;

endmodule

继承事业,薪火相传
返回列表