复杂组合逻辑电路

简介: 设计实现一个流行IC 74138,使用数据流建模和你在1-1中使用的译码器集成三线—八线译码器74138除了3线到8线的基本译码输入输出端外,为便于扩展成更多位的译码电路和实现数据分配功能,74138还有三个输入使能端 EN1, EN2A和EN2B 。74138真值表和内部逻辑图如下图:所示符号图中,输入输出低电平有效用极性指示符表示,同时极性指示符又标明了信号方向。74138的三个输入使能(又称选通ST)信号之间是与逻辑关系, EN1高电平有效,EN2A和EN2B低电平有效。只有在所有使能端都为有效电平(EN1EN2AEN2B=100)时,74138才对输入进行译码,相应输出端为低电

设计实现一个流行IC 74138,使用数据流建模和你在1-1中使用的译码器

集成三线—八线译码器74138除了3线到8线的基本译码输入输出端外,为便于扩展成更多位的译码电路和实现数据分配功能,74138还有三个输入使能端 EN1, EN2A和EN2B 。74138真值表和内部逻辑图如下图:

网络异常,图片无法展示
|
网络异常,图片无法展示
|

所示符号图中,输入输出低电平有效用极性指示符表示,同时极性指示符又标明了信号方向。74138的三个输入使能(又称选通ST)信号之间是与逻辑关系, EN1高电平有效,EN2A和EN2B低电平有效。只有在所有使能端都为有效电平(EN1EN2AEN2B=100)时,74138才对输入进行译码,相应输出端为低电平,即输出信号为低电平有效。在EN1EN2AEN2B ≠100时,译码器停止译码,输出无效电平(高电平)。这和你在1中创建的非常相似,它只是增加了控制(使能)信号G1,/G2A,/G2B。这使得在有些系统中的解码更加简单。

实验步骤

  • 打开Vivado创建一个空工程,命名为lab3_2.
    创建并添加Verilog模块,命名为decoder_74138_dataflow,实例化你在1-1中开发的模块。添加额外的逻辑,使用数据流建模结构建模所设计的功能。
    编写仿真文件来验证代码的正确
    将你在1中使用的XDC文件添加到工程。修改XDC文件,将g1分配给SW7,g2a_n分配给SW6,g2b_n分配给SW5。
    综合实现你的设计。
    生成比特流文件,下载到Nexys4开发板上,验证功能。

首先,修改lab1的decoder_3to8_dataflow模块,在其中加入enable信号

module 
decoder_3to8_dataflow( input enable, input [2:0]x, output reg [7:0]y ); 
always@(*) if(enable) case(x) 3’b000: y=8’b0000_0001; 
3’b001: y=8’b0000_0010; 
3’b010: y=8’b0000_0100; 
3’b011: y=8’b0000_1000; 
3’b100: y=8’b0001_0000; 
3’b101: y=8’b0010_0000; 
3’b110: y=8’b0100_0000; 
3’b111: y=8’b1000_0000;
endcase else y=8’b0000_0000; 
endmodule

之后,decoder_74138_dataflow模块的具体实现:

module decoder_74138_dataflow(
    input g1,
    input g2a_n,
    input g2b_n,
    input [2:0]x,
    output [7:0]y
    );
    reg enable;
    always@(*)
    begin
        if(g1==1&&g2a_n==0&&g2b_n==0)
        enable=1;
        else enable=0;
    end
    decoder_3to8_dataflow A(enable,x,y);
endmodule
## 设计一个8-3编码器   ### 多输出编码电路  编码器电路是出于对标准化,速度,保密性,安全性或者通过缩小尺寸来节省空间的考虑,将信息从一种形式(编码)转换为另一种形式(编码)的电路。在数字电路中,编码信息可以减小信息存储所用的空间,确定功能的优先级。广泛使用的编码电路的例子有,优先编码器,哈弗曼编码器等 ### 8-3编码器真值表

网络异常,图片无法展示
|

相关文章
|
JavaScript 前端开发
javascript 如何判断字符串日期是否相差七天
在JavaScript中,你可以使用`Date`对象来比较两个日期之间的差异。下面是一个简单的示例,演示如何判断两个字符串日期是否相差七天: ```javascript function isSevenDaysDifference(date1, date2) { // 确保输入是字符串 if (typeof date1 !== 'string' || typeof date2 !== 'string') { return false; } // 将字符串转换为Date对象 var d1 = new Date(date1);
320 1
|
消息中间件 Java
SpringBoot RabbitMQ死信队列
SpringBoot RabbitMQ死信队列
239 0
|
机器学习/深度学习 监控 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 E题:高速公路应急车道紧急启用模型 问题分析、数学模型及Python代码
2024年中国研究生数学建模竞赛E题要求建立高速公路应急车道紧急启用模型,以缓解特定路段的拥堵问题。题目提供了四个视频观测点的数据,需分析交通流参数随时间的变化规律,建立拥堵预警模型,并验证模型有效性。此外,还需设计合理的应急车道启用规则和算法,优化视频监控点布局,以提升决策科学性和成本效益。涉及视频数据处理、非线性动态系统建模和机器学习等技术。适合交通工程、数学、计算机科学等多个专业学生参与。需利用Python等工具进行数据处理和建模。具体问题包括统计参数变化、建立拥堵模型、验证模型有效性、设计启用规则和优化监控点布局。
1499 12
【BetterBench博士】2024年中国研究生数学建模竞赛 E题:高速公路应急车道紧急启用模型 问题分析、数学模型及Python代码
|
10月前
|
机器学习/深度学习 人工智能 自然语言处理
大模型强崩溃!Meta新作:合成数据有剧毒,1%即成LLM杀手
在人工智能领域,大型语言模型(LLMs)的快速发展令人瞩目,但递归生成数据可能导致“模型崩溃”。Meta的研究揭示,模型在训练过程中会逐渐遗忘低概率事件,导致数据分布偏差。即使少量合成数据(如1%)也会显著影响模型性能,最终导致崩溃。研究强调保留原始数据的重要性,并提出社区合作和技术手段来区分合成数据和真实数据。论文地址:https://www.nature.com/articles/s41586-024-07566-y
331 2
|
存储 缓存 负载均衡
一文搞懂一致性hash的原理和实现
一文搞懂一致性hash的原理和实现
|
监控 供应链 定位技术
ERP系统中的销售订单处理与订单跟踪
【7月更文挑战第25天】 ERP系统中的销售订单处理与订单跟踪
957 0
|
网络协议 网络安全 程序员
socket,tcp,http三者之间的原理和区别
socket,tcp,http三者之间的原理和区别
socket,tcp,http三者之间的原理和区别
|
消息中间件 Java Kafka
flink问题之在通过TableFunction实现行转列时Row一直是空如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
445 1
|
安全 Cloud Native 算法
云原生安全-云计算发展白皮书(2020年)解读
云原生安全-云计算发展白皮书(2020年)解读
319 0
|
缓存 开发工具 git
Git学习笔记(二) git stash
Git学习笔记(二) git stash
1214 0