【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL18

news/2024/9/25 8:20:39/

实现3-8译码器①

描述

下表是74HC138译码器的功能表.

E3

E2_n

E1_n

A2

A1

A0

Y0_n

Y1_n

Y2_n

Y3_n

Y4_n

Y5_n

Y6_n

Y7_n

x

1

x

x

x

x

1

1

1

1

1

1

1

1

x

x

1

x

x

x

1

1

1

1

1

1

1

1

0

x

x

x

x

x

1

1

1

1

1

1

1

1

1

0

0

0

0

0

0

1

1

1

1

1

1

1

1

0

0

0

0

1

1

0

1

1

1

1

1

1

1

0

0

0

1

0

1

1

0

1

1

1

1

1

1

0

0

0

1

1

1

1

1

0

1

1

1

1

1

0

0

1

0

0

1

1

1

1

0

1

1

1

1

0

0

1

0

1

1

1

1

1

1

0

1

1

1

0

0

1

1

0

1

1

1

1

1

1

0

1

1

0

0

1

1

1

1

1

1

1

1

1

1

0

①请用基础门电路实现该译码器电路,用Verilog将电路描述出来。基础门电路包括:非门、多输入与门、多输入或门

输入描述:

   input             E1_n   ,
   input             E2_n   ,
   input             E3     ,
   input             A0     ,
   input             A1     ,
   input             A2     

输出描述:

   output wire       Y0_n   ,  
   output wire       Y1_n   , 
   output wire       Y2_n   , 
   output wire       Y3_n   , 
   output wire       Y4_n   , 
   output wire       Y5_n   , 
   output wire       Y6_n   , 
   output wire       Y7_n   

解题思路:

由功能表可以看出,当且仅当E3 = 1、E2_n = 0、E1_n=0时,3-8译码器正常工作;

由于要求使用门电路实现,因此给出输出信号Y0_n~Y1_7的逻辑函数式

Y0_n = A_2 + A_1 + A_0\\ Y1_n = A_2 + A_1 + \overset{-}{A_0} \\ Y2_n = A_2 + \overset{-}{A_1} + A_0 \\ Y3_n = A_2 + \overset{-}{A_1} + \overset{-}{A_0} \\ Y4_n = \overset{-}{A_2} + A_1 + A_0 \\ Y5_n = \overset{-}{A_2} + A_1 + \overset{-}{A_0} \\ Y6_n = \overset{-}{A_2} + \overset{-}{A_1} + A_0 \\ Y7_n = \overset{-}{A_2} + \overset{-}{A_1} + \overset{-}{A_0} \\

代码如下所示:

使用行为级建模

`timescale 1ns/1nsmodule decoder_38(input             E1_n   ,input             E2_n   ,input             E3     ,input             A0     ,input             A1     ,input             A2     ,output wire       Y0_n   ,  output wire       Y1_n   , output wire       Y2_n   , output wire       Y3_n   , output wire       Y4_n   , output wire       Y5_n   , output wire       Y6_n   , output wire       Y7_n   
);reg [7:0] Y_t;
always @(*) beginY_t = 8'b1111_1111;if (E3 == 1'b1 && E2_n == 1'b0 && E1_n == 1'b0) beginY_t[0] = A2 | A1 | A0;Y_t[1] = A2 | A1 | ~A0;Y_t[2] = A2 | ~A1 | A0;Y_t[3] = A2 | ~A1 | ~A0;Y_t[4] = ~A2 | A1 | A0;Y_t[5] = ~A2 | A1 | ~A0;Y_t[6] = ~A2 | ~A1 | A0;Y_t[7] = ~A2 | ~A1 | ~A0;endelse beginY_t = 8'b1111_1111;end
endassign Y0_n = Y_t[0];
assign Y1_n = Y_t[1];
assign Y2_n = Y_t[2];
assign Y3_n = Y_t[3];
assign Y4_n = Y_t[4];
assign Y5_n = Y_t[5];
assign Y6_n = Y_t[6];
assign Y7_n = Y_t[7];endmodule
在使用门级建模时,出现以下问题:

代码如下:

`timescale 1ns/1nsmodule decoder_38(input             E1_n   ,input             E2_n   ,input             E3     ,input             A0     ,input             A1     ,input             A2     ,output wire       Y0_n   ,  output wire       Y1_n   , output wire       Y2_n   , output wire       Y3_n   , output wire       Y4_n   , output wire       Y5_n   , output wire       Y6_n   , output wire       Y7_n   
);//代码二wire work;and a1 (work, ~E1_n, ~E2_n, E3_n);or o0(Y0_n, A0, A1, A2, ~work);
or o1(Y1_n, ~A0, A1, A2, ~work);
or o2(Y2_n, A0, ~A1, A2, ~work);
or o3(Y3_n, ~A0, ~A1, A2, ~work);
or o4(Y4_n, A0, A1, ~A2, ~work);
or o5(Y5_n, ~A0, A1, ~A2, ~work);
or o6(Y6_n, A0, ~A1, ~A2, ~work);
or o7(Y7_n, ~A0, ~A1, ~A2, ~work);endmodule

但是其结果如下:

问题出现在哪里??


http://www.ppmy.cn/news/1530204.html

相关文章

鸿蒙OpenHarmony【小型系统内核(用户态启动)】子系统开发

用户态启动 用户态根进程启动 根进程是系统第一个用户态进程,进程ID为1,它是所有用户态进程的祖先。 图1 进程树示意图 根进程的启动过程 使用链接脚本将如下init启动代码放置到系统镜像指定位置。 #define LITE_USER_SEC_ENTRY __attribute__((s…

Ansible部署与应用基础

由于互联网的快速发展导致产品更新换代速度逐步增长,运维人员每天都要进行大量的维护操作,按照传统方式进行维护使得工作效率低下。这时部署自动化运维就 可以尽可能安全、高效的完成这些工作。 一、Ansible概述 1.什么是Ansible Ansible 是基于 Pytho…

Windows环境下Node.js多版本切换的实用指南

Web开发和全栈开发中,Node.js已成为不可或缺的工具之一。然而,随着项目的多样化和技术栈的更新迭代,我们可能需要同时管理多个Node.js版本以满足不同项目的需求。在Windows环境下,如何高效地切换这些版本成为了一个关键问题。简单…

React UI组件库推荐

Next UI:Vite | NextUI - Beautiful, fast and modern React UI Library Ant Design:Ant Design - 一套企业级 UI 设计语言和 React 组件库

solidwork装配体的零件常见错误--您在尝试识别的特征具有与其他特征的父/子关系

比如下面这种 如果点击编辑特征出现这个警告。 解决办法如下:

构建预测睡眠质量模型_相关性分析,多变量分析和聚类分析

数据入口:睡眠质量记录数据集 - Heywhale.com 本数据集目的是探究不同因素是如何影响睡眠质量和整体健康的。 数据说明 字段说明Heart Rate Variability心率变异性:心跳时间间隔的模拟变化Body Temperature体温:以摄氏度为单位的人工生成体…

选择租用徐州服务器机柜的作用有哪些?

企业为了线上网络业务,通常都会选择租用服务器来确保网络的稳定性,企业选择服务器租用和托管业务后,同时也需要租用服务器机柜来进行放置所使用的服务器,对于机柜企业可以选择租用徐州机柜,下面就来聊一下选择租用徐州…

linux atomic 原子变量操作

原子操作是指指令以原子的方式操作,执行过程不会被打断。linux内核提供了atomic_t类型的原子变量,它的实现依赖于不同的体系结构。 include/linux/types.h typedef struct { int counter; } atomic_t; #ifdef CONFIG_64BIT typedef struct { long counter; } atomic64_…