【FPGA & Verilog】 3- 8译码器(⽂本输⼊设计)

本文介绍了如何在Verilog中使用连续赋值和过程赋值设计74138译码器电路,详细说明了设计步骤、输入输出、引脚约束和仿真过程,通过比较两种方法在RTLView中的差异来理解它们的优劣。
摘要由CSDN通过智能技术生成

⼀ 实验⽬的

1. 掌握组合逻辑电路的设计⽅法

2. 掌握“连续赋值”和“过程赋值”设计的流程

⼆ 实验内容

设计与74138功能完全相同的译码器电路

2.1 设计输⼊

1. 模块名称:Decode138

2. 输⼊输出:C、B、A、G1、G2An、G2Bn 、Y[7:0] ;

2.2 引脚约束

1. 输⼊端 ⾃定义

2. 输出端 ⾃定义

2.3 设计要求

1. 使⽤“连续赋值”和“过程赋值”(包含case和if-else)两种⽅案分别实现

2. 使⽤RTL View分析电路的区别

2.4 电路仿真1. 激励⽂件

2. 功能仿真

三、实验报告

1. 设计代码、RTL视图

2. 仿真结果

3. 报告中附代码和仿真结果截图

实验步骤:

1.  参考74ls138的真值表

2.  verilog代码&编译

module Decode138(C,B,A,G1,G2An,G2Bn,Y);   //连续赋值

input C,B,A,G1,G2An,G2Bn;

output [7:0]Y;

assign Y = ({G1,G2An,G2Bn} == 3'b100) ?

  ~(8'b0000_0001 << {C,B,A}) : 8'b1111_1111;

endmodule

//module Decode138(C,B,A,G1,G2An,G2Bn,Y);   //过程赋值

// input C,B,A,G1,G2An,G2Bn;

// output reg [7:0]Y;

// always@(*)

// begin

// if({G1,G2An,G2Bn} == 3'b100)

//  case({C,B,A})

//  3'b000: Y=8'b1111_1110;

//  3'b001: Y=8'b1111_1101;

//  3'b010: Y=8'b1111_1011;

//  3'b011: Y=8'b1111_0111;

//  3'b100: Y=8'b1110_1111;

//  3'b101: Y=8'b1101_1111;

//  3'b110: Y=8'b1011_1111;

//  3'b111: Y=8'b0111_1111;

//  endcase

// else

//  Y = 8'b1111_1111;

// end

//endmodule

连续赋值和过程赋值前期判断和数据选择器是一样的,判断{G1,G2An,G2Bn}是否是3'b 100   (即RTL图中Equal的3'h 4)

但是两者的数据选择器的输入是不一样的,当控制端为1时, 过程赋值用到了Decoder(这里是3-8译码器),而连续赋值中用到了ShiftLeft,即左移运算符

仿真时设置G1=1,G2An=0,G2Bn=0

C , B , A从000增加到111(设置三者自增周期之比为 :4:2:1) ,C是高位

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值