用3-8译码器实现全减器

news2024/11/16 14:24:25

描述

        请使用3-8译码器和必要的逻辑门实现全减器,全减器接口图如下,A是被减数,B是减数,Ci是来自低位的借位,D是差,Co是向高位的借位。

3-8译码器代码如下,可将参考代码添加并例化到本题答案中。

module decoder_38(
   input             E      ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output reg       Y0n    ,  
   output reg       Y1n    , 
   output reg       Y2n    , 
   output reg       Y3n    , 
   output reg       Y4n    , 
   output reg       Y5n    , 
   output reg       Y6n    , 
   output reg       Y7n    
);

always @(*)begin
   if(!E)begin
      Y0n = 1'b1;
      Y1n = 1'b1;
      Y2n = 1'b1;
      Y3n = 1'b1;
      Y4n = 1'b1;
      Y5n = 1'b1;
      Y6n = 1'b1;
      Y7n = 1'b1;
   end  
   else begin
      case({A2,A1,A0})
         3'b000 : begin
                     Y0n = 1'b0; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b001 : begin
                     Y0n = 1'b1; Y1n = 1'b0; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b010 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b0; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b011 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b0; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b100 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b0; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b101 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b0; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b110 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b1;
                  end 
         3'b111 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b0;
                  end 
         default: begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end
      endcase  
   end 
end    
     
endmodule

输入描述

   input             A     ,
   input             B     ,
   input             Ci    

输出描述

   output wire       D     ,
   output wire       Co    

解题分析

3-8译码器实现全减器

        38译码器的输出实际上包含了输入A2  A1  A0组成的所有最小项,而全减器作为组合电路,其输出最终可化简为最小项的形式。

        由于译码器的输出为最小项取反,而逻辑函数可以写成最小项之和的形式,故可以利用门电路和译码器实现逻辑函数。

需先列出全减器的真值表。

        由真值表可得出,输出D的逻辑表达式用最小项表示为:

D = m1+m2+m4+m7

        输出Co的逻辑表达式用最小项表示为:

Co = m1+m2++m3+m7

        由于译码器的输出为最小项取反,下面需要将表达式中的最小项转换为最小项取反的形式。根据反演定理,转换结果如下:

D = (m1’m2’m4’m7’)’;

Co=(m1’m2’m3’m7’)’

‘表示取反。

        由上式可知,采用与非门即可实现该电路的组合逻辑输出。关键电路如下:

        上图中D和Co的输入端来自同一各译码器。

        结合电路图,将电路转换成Verilog代码描述如下:

wire       Y0_n   ; 

wire       Y1_n   ;

wire       Y2_n   ;

wire       Y3_n   ;

wire       Y4_n   ;

wire       Y5_n   ;

wire       Y6_n   ;

wire       Y7_n   ;

decoder_38 U0(

   .E      (1'b1),

   .A0     (Ci  ),

   .A1     (B   ),

   .A2     (A   ),

 

   .Y0n    (Y0_n), 

   .Y1n    (Y1_n),

   .Y2n    (Y2_n),

   .Y3n    (Y3_n),

   .Y4n    (Y4_n),

   .Y5n    (Y5_n),

   .Y6n    (Y6_n),

   .Y7n    (Y7_n)

);

assign D = ~(Y1_n & Y2_n & Y4_n & Y7_n);

assign Co = ~(Y1_n & Y2_n & Y3_n & Y7_n);

参考代码

`timescale 1ns/1ns


module decoder_38(
   input             E      ,
   input             A0     ,
   input             A1     ,
   input             A2     ,
   
   output reg       Y0n    ,  
   output reg       Y1n    , 
   output reg       Y2n    , 
   output reg       Y3n    , 
   output reg       Y4n    , 
   output reg       Y5n    , 
   output reg       Y6n    , 
   output reg       Y7n    
);

always @(*)begin
   if(!E)begin
      Y0n = 1'b1;
      Y1n = 1'b1;
      Y2n = 1'b1;
      Y3n = 1'b1;
      Y4n = 1'b1;
      Y5n = 1'b1;
      Y6n = 1'b1;
      Y7n = 1'b1;
   end  
   else begin
      case({A2,A1,A0})
         3'b000 : begin
                     Y0n = 1'b0; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b001 : begin
                     Y0n = 1'b1; Y1n = 1'b0; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b010 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b0; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b011 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b0; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b100 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b0; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b101 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b0; Y6n = 1'b1; Y7n = 1'b1;
                  end 
         3'b110 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b1;
                  end 
         3'b111 : begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b0; Y7n = 1'b0;
                  end 
         default: begin
                     Y0n = 1'b1; Y1n = 1'b1; Y2n = 1'b1; Y3n = 1'b1; 
                     Y4n = 1'b1; Y5n = 1'b1; Y6n = 1'b1; Y7n = 1'b1;
                  end
      endcase  
   end 
end    
     
endmodule

module decoder1(
   input             A     ,
   input             B     ,
   input             Ci    ,
   
   output wire       D     ,
   output wire       Co         
);
                  
wire       Y0_n   ;  
wire       Y1_n   ; 
wire       Y2_n   ; 
wire       Y3_n   ; 
wire       Y4_n   ; 
wire       Y5_n   ; 
wire       Y6_n   ; 
wire       Y7_n   ;

decoder_38 U0(
   .E      (1'b1),
   .A0     (Ci  ),
   .A1     (B   ),
   .A2     (A   ),
  
   .Y0n    (Y0_n),  
   .Y1n    (Y1_n), 
   .Y2n    (Y2_n), 
   .Y3n    (Y3_n), 
   .Y4n    (Y4_n), 
   .Y5n    (Y5_n), 
   .Y6n    (Y6_n), 
   .Y7n    (Y7_n)
);

assign D = ~(Y1_n & Y2_n & Y4_n & Y7_n);
assign Co = ~(Y1_n & Y2_n & Y3_n & Y7_n);

endmodule

注:解题分析来源于网友,如有侵权,请告删之。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1083502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring 1.依赖 2.xml 3.对象 4.测试

配置模型 依赖注入 很简单 框架很简单 依赖 xml 对象 测试 依赖 写在pom mvn网址找spring 2.写类 就是对象 测试 我们获取对象(spring创建) 才能用 配置文件 官网找 下拉 粘贴标红 点击它告诉系统是一个 然后第二次就点加入不是新创建

虹科干货 | 虹科带你了解车载以太网-SOME/IP协议

在标准的网络七层架构中,SOME/IP(Scalable service-Oriented Middleware over IP) 作为应用层协议运行于车载以太网四层以上,作为以太网通信中间件来实现应用层和IP层的数据交互,使其不依赖于操作系统,又能兼容AUTOSAR…

如何通过Express和React处理SSE

本文作者为360奇舞团前端开发工程师 最近AIGC技术的大热,市面上也出现了许多类似生产的AI工具,其中有一大特色就是对话的输出结果是类似真人的打字效果出现,要呈现出这种效果,最主要的就是要利用SSE技术(Server-Sent E…

【新书推荐】AI时代,当程序员遇到ChatGPT,开发效率飞起来!

文章目录 ChatGPT为开发提速一、ChatGPT自动生成代码二、优化代码结构三、自动化测试四、智能推荐五、ChatGPT在开发中的实际应用六、总结 新书推荐《AI时代程序员开发之道:ChatGPT让程序员插上翅膀》内容简介作家简介目录获取方式 ChatGPT为开发提速 人工智能是当…

STM32物联网基于ZigBee智能家居控制系统

实践制作DIY- GC0169-ZigBee智能家居 一、功能说明: 基于STM32单片机设计-ZigBee智能家居 二、功能介绍: 1个主机显示板:STM32F103C最小系统ZigBee无线模块OLED显示器 语音识别模块多个按键ESP8266-WIFI模块(仅WIFI版本有&…

c++数据处理----图像修补:cv::inpaint()

图像修补:cv::inpaint() cv::inpaint() 是OpenCV中的一个函数,用于图像修补(image inpainting)。图像修补是一种图像处理技术,用于去除图像中的损坏或不需要的区域,然后用周围的信息填充这些区域,使图像看…

苹果安卓网页的H5封装成App的应用和原生开发的应用有什么不一样?

老哥在么?H5封装的app和原生开发的app有什么不一样?,不懂就要问,我能理解哈,虽然这个问题有点小白,但是我还是得认真回答,以防止我回答的不是很好,所以我科技了一下,所以…

1688商品评论数据接口,1688商品评论API接口

1688商品评论内容数据接口步骤如下: 通过1688开放平台接口获取商品评论内容数据:首先,您需要在开放平台注册成为开发者并创建一个应用,获取到所需的App Key和App Secret等信息。使用获取到的App Key和App Secret,进行…

智能防眩目前照灯系统控制器ADB

经纬恒润的自适应远光系统—— ADB(Adaptive Driving Beam) 是一种能够根据路况自适应变换远光光型的智能远光控制系统。根据本车行驶状态、环境状态以及道路车辆状态,ADB 系统自动为驾驶员开启或退出远光。同时,根据车辆前方视野…

深入了解进程:计算机中的任务管理与隔离

什么是进程? 进程是一个独立的执行环境,包括自己的内存空间、程序计数器、文件句柄等。每个进程都是操作系统的一个独立实例,它们之间通常相互隔离。 通俗来说,进程就是程序的一次执行过程,程序是静态的,它…

4Spring及Spring系列-基本

8、Spring/Spring MVC Spring常见面试题55道(附答案2023最新版)_spring面试题-CSDN博客Spring是一个开源的Java企业级开发框架,由Rod Johnson于2003年创建。它提供了一套全面的编程和配置模型,用于构建现代化的基于Java的企业应用…

【网工日常】Web网管及注意事项

通过Web网管登录设备简介 定义 Web网管是一种对设备的管理方式,它利用设备内置的Web服务器,为用户提供图形化的操作界面。用户需要从终端通过HTTPS登录到设备,才能利用Web网管对设备进行管理和维护。 目的 用户对设备的管理方式有命令行方式…

基于自适应图卷积网络的轨道交通短时客流预测

文章信息 论文题目为《Adaptive graph convolutional network-based short-term passenger flow prediction for metro》的一篇2023年5月发表在Journal of Intelligent Transportation Systems的基于自适应图卷积网络的轨道交通短时客流预测文章。 摘要 随着城市化进程的发展和…

医疗机构又进化了,一招搞定UPS设备太爽了!

在现代社会中,能源供应的可靠性至关重要,不间断电源(UPS)系统是维持关键设备运行的关键组成部分。UPS监控是一种重要的技术,用于实时监测UPS的性能、电池状态和电力质量。 客户案例 四川某医院是一家大型医疗机构&…

应对优秀解决方案推荐

验证码是保护网站免受自动化 的重要工具,但同时也给实现自动化任务带来一定的困扰。本文将为您介绍如何应对验证码识别难题,并推荐一些优秀的解决方案,帮助您在实际操作中应对验证码识别问题。 1. 验证码识别难题 验证码识别是指将网站上的…

DevExpress Reporting中文教程 - 如何在macOS等系统中生成导出报表文档

DevExpress Reporting是.NET Framework下功能完善的报表平台,它附带了易于使用的Visual Studio报表设计器和丰富的报表控件集,包括数据透视表、图表,因此您可以构建无与伦比、信息清晰的报表。 在本文中,我们将讨论如何在.NET MA…

基于threejs的3d学校示例

源码下载地址在文章末尾! 效果演示 总览 漫游模式 切换黑夜 视频播放 源码下载地址 https://download.csdn.net/download/qq_43185384/88415886

优盘无法格式化?分享简单解决方法!

“我的优盘插入了一个带病毒的电脑中,现在优盘也中毒了,想把它格式化。但是操作的时候却显示优盘无法格式化,这种情况应该怎么办呢?” 优盘,又称USB闪存驱动器。由于其体积小且方便携带,受到广大电脑用户的…

Vega Prime入门教程14.04:CDB测试

本文首发于:Vega Prime入门教程14.04:CDB测试 打开失败 打开vpcdb_yemen_urban.acf 会报错 点击确定后会显示默认界面 这个白天蓝海应该是默认场景。 开启服务 打开LP,点击菜单栏或者工具栏 显示管理界面 切换至rtp界面 点击Start RTP按…

跨境电商需要使用ERP吗?| 跨境电商卖家应如何选择ERP?

复杂多变的市场环境将中国跨境电商行业带到了新的发展阶段。受益于国家对于跨境电商的持续鼓励政策,许多跨境电商企业已经初具规模。积累了较强的产品、供应链能力及一定的独立站运营经验。” 随着跨境电商企业规模升级,平台提供的卖家后台系统往往无法…