译码器设计——Verilog HDL语言

任务描述

设计一个3线-8线译码器。运用Verilog HDL进行设计,完善译码器的功能描述风格代码,具备组合逻辑电路的设计仿真和测试的能力。

相关知识

  1. 3线-8线译码器的功能;
  2. 如何用always语句、case语句进行逻辑功能的描述。

3线-8线译码器的功能

译码是编码的逆过程,3线-8线译码器可以将n位二进制代码可译成2n种电路状态。译码器框图如下所示。
在这里插入图片描述

always语句

通俗的理解,always就是:一直运行。
always过程从关键字always开始,可以连续多次运行,当过程的最后一行代码执行完成后,再次从第一行代码开始执行。
一个模块中可以包含多个过程,各个过程相互之间是并发执行的。不过,过程不能够嵌套使用。如果过程中有多个语句,则需要使用关键字begin、end或fork、join将它们组成一个代码块。这两种关键字组合代表着顺序代码块和并行代码块。

事件时序控制

事件时序控制的意思是,如果指定的事件发生,则代码被触发执行。它的关键字为@,后面可以加变量或者事件名称。例如:

@(a or b) y = ~a; //当a或b其中任意一个变量发生变化时,则将a非赋值给y
@(posedge clk) y = 1; //在变量clk的上升沿,将1赋值给y

case语句

case语句是一个多路条件分支形式,其语法如下:

case(case_expr)
case_item_expr{ ,case_item_expr} : procedural_statement
. . .
. . .
[default: procedural_statement]
endcase

case语句首先对条件表达式case_expr求值,然后依次对各分支项求值并进行比较,第一个与条件表达式值相匹配的分支中的语句被执行。可以在1个分支中定义多个分支项;这些值不需要互斥。缺省分支覆盖所有没有被分支表达式覆盖的其他分支。

编程要求

根据提示,设计具有一位使能端的3线-8线译码器。当使能端为0时,8位输出信号全为0;如果一位使能信号为1,则输出高电平有效的译码信号。该译码器真值表如下所示。
在这里插入图片描述

源代码

测试平台:EduCoder

//设计具有一位使能端的3线-8线译码器。当使能端为0时,8位输出信号全为0;
//如果一位使能信号为1,则输出高电平有效的译码信号。
module decoder3e_test(a,ena,y);
  input [2:0] a;
  input ena;
  output [7:0] y; 
  reg [7:0] y;
  // 请在下面添加代码,完成设计任务
/* Begin */
  always @ (a or ena)
    begin
        if(ena == 1)
            case(a)
               3'b000: y = 8'b00000001; 
               3'b001: y = 8'b00000010; 
               3'b010: y = 8'b00000100; 
               3'b011: y = 8'b00001000; 
               3'b100: y = 8'b00010000; 
               3'b101: y = 8'b00100000; 
               3'b110: y = 8'b01000000; 
               3'b111: y = 8'b10000000; 
               default: y = 8'b00000000;
            endcase
        else
            y = 8'b00000000;
    end
/* End */
endmodule

觉得有帮助的可以点个赞再走哦!!

  • 16
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MMagicLoren

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值