3-8译码器与全加器

实验4:3-8译码器 在数字电路中,3-8译码器可以组合成更复杂的逻辑电路,用于实现各种数字信号处理和控制功能。例如,可以使用多个3-8译码器来实现更高位数的译码器,或者使用3-8译码器和其它逻辑门电路来实现计数器、时序控制等复杂的电路功能。通过本实验,我们深入了解了3-8译码器的工作原理,学习了如何使用译码器来实现对数字信号的转换和控制。同时,本实验也增加了我们对数字电路的理解和掌握。 阅读详情
AI摘要

本文介绍了如何使用Verilog语言实现3-8译码器的if-else和case结构,并详细展示了1位、4位和8位全加器的设计过程,包括门级和行为级模拟。

一、3-8译码器

逻辑真值表如下:

实现 3-8 译码器功能的 Verilog 代码形式也有很多种,我们这里主要列举两种最容易理解的方法:

1)if-else方法

1 module decoder3_8
2 (
3 input wire in1 , //输入信号 in1
4 input wire in2 , //输入信号 in2
5 input wire in3 , //输入信号 in3
6 
7 output reg [7:0] out //输出信号 out
8 );
9 
10 //out:根据 3 个输入信号选择输出对应的 8bit out 信号
11 always@(*)
12 //使用"{}"位拼接符将 3 个 1bit 数据按照顺序拼成一个 3bit 数据
13 if({in1, in2, in3} == 3'b000)
14 out = 8'b0000_0001;
15 else if({in1, in2, in3} == 3'b001)
16 out = 8'b0000_0010;
17 else if({in1, in2, in3} == 3'b010)
18 out = 8'b0000_0100;
19 else if({in1, in2, in3} == 3'b011)
20 out = 8'b0000_1000;
21 else if({in1, in2, in3} == 3'b100)
22 out = 8'b0001_0000;
23 else if({in1, in2, in3} == 3'b101)
24 out = 8'b0010_0000;
25 else if({in1, in2, in3} == 3'b110)
26 out = 8'b0100_0000;
27 else if({in1, in2, in3} == 3'b111)
28 out = 8'b1000_0000;
29 else
30 //最后一个 else 对应的 if 中的条件只有一种情况,还可能产生以上另外的 7 种情况
31 //如果不加这个 else 综合器会把不符合该 if 中条件的上面另外 7 种情况都考虑进去
32 //会产生大量的冗余逻辑并产生 latch(锁存器),所以在组合逻辑中最后一个 if
33 //后一定要加上 else,并任意指定一种确定的输出情况
34 out = 8'b0000_0001;

2)case方法

1 module decoder3_8
2 (
3 input wire in1 , //输入信号 in1
4 input wire in2 , //输入信号 in2
5 input wire in3 , //输入信号 in3
6 
7 output reg [7:0] out //输出信号 out
8 );
9 
10 //out:根据输入的 3bit in 信号选择输出对应的 8bit out 信号
11 always@(*)
12 case({in1, in2, in3})
13 3'b000 : out = 8'b0000_0001; //输入与输出的 8 种译码对应关系
14 3'b001 : out = 8'b0000_0010;
15 3'b010 : out = 8'b0000_0100;
16 3'b011 : out = 8'b0000_1000;
17 3'b100 : out = 8'b0001_0000;
18 3'b101 : out = 8'b0010_0000;
19 3'b110 : out = 8'b0100_0000;
20 3'b111 : out = 8'b1000_0000;
21 //因为 case 中列举了 in 所有可能输入的 8 种情况,且每种情况都有对应确定的输出
22 //所以此处 default 可以省略,但是为了以后因不能够完全列举而产生 latch
23 //所以我们默认一定要加上 default,并任意指定一种确定的输出情况
24 default: out = 8'b0000_0001;
25 endcase
26 
27 endmodule

RTL视图:

二、全加器

1)1位全加器

Verilog:门级

module A1bits(        //Verilog-2001语法
    input A,B,Cin,
	 output Sum,Cout
	 );
	 wire t1,t2,t3;//电路功能描述
	 assign Sum=A^B^Cin;//表达式中的"^"为异或运算符
	 assign t1=A&B,//表达式中的"&"为与运算符
	        t2=A&Cin,
	        t3=B^Cin;
	 assign Cout=t1|t2|t3;//表达式中的"|"为或运算符
	 endmodule
	 

RTL电路:

Logsim

Verilog:行为级

module top_module ();
    reg clk=0;
    always #5 clk = ~clk;  // Create clock with period=10
    initial `probe_start;   // Start the timing diagram
 
    `probe(clk);        // Probe signal "clk"
 
    // A testbench
    reg ain,bin,cin;
    initial begin
        ain=0;
        bin=0;
        cin=0;
        #5 ain=1;
           bin=1;
        #5 ain=0;
           bin=0;
        #5 ain=1;
           cin=1;
        #5 bin=1;
        #60 $finish;            // Quit the simulation
    end
    full_add add(.ain(ain),.bin(bin),.cin(cin));  // Sub-modules work too.
endmodule
module  full_add(input ain,bin,cin,output sum,count);
    reg sum,count;
    always @(ain or bin or cin)begin
    sum=ain+cin+bin;//ain^bin^cin
    count=(ain&bin)|(ain&cin)|(bin&cin); 
    end
    `probe(sum);
    `probe(ain);
    `probe(bin);
    `probe(cin);
    `probe(count);
endmodule

2)4位全加器

Verilog

module A4bit(
       input x,Y,cin
       output f,cout)
;
       assign f=x^y^cin;
       assign cout=(x&y)1(x&cin)l(y&cin);
       endmodule
module CRA(
       input [3:0]x,y
       input cin,
       output [3:0]f,
       output cout;
       )
       wire[4:0]c;
       assign c[0]=cin;
       A4bit fa0(x[0],y[0],c[0],f[0],c[1]);
       A4bit fal(x[1],y[1],c[0],f[1],c[2]);
       A4bit fa2(x[2],y[2],c[0],f[2],c[3]);
       A4bit fa3(x[3],y[3],c[0],f[3],c[4]);
       assign cout=c[4];
  endmodule

RTL电路:

Logsim

Verilog:行为级

module top_module ();
    reg clk=0;
    always #5 clk = ~clk;  // Create clock with period=10
    initial `probe_start;   // Start the timing diagram
 
    `probe(clk);        // Probe signal "clk"
 
    // A testbench
    reg [3:0] ain,bin;
    reg cin;
    initial begin
        ain=0;
        bin=0;
        cin=0;
        #5 ain=2;
           bin=3;
        #5 ain=4;
           bin=2;
        #5 ain=14;
           cin=1;
        #5 bin=1;
        #60 $finish;            // Quit the simulation
    end
    four_add add(.ain(ain),.bin(bin),.cin(cin));  // Sub-modules work too.
endmodule
 
module four_add(ain,bin,cin,sum,count);
    input [3:0] ain,bin,cin;
    output reg count;
    output reg [3:0] sum;
   
    always @(*) begin
        {count,sum}=ain+bin+cin;
    end
    `probe(sum);
    `probe(ain);
    `probe(bin);
    `probe(cin);
    `probe(count);
endmodule

3)8位全加器

采用一位全加器模板实现8位全加器

module A8bit(
       input x,Y,cin
       output f,cout)
;
       assign f=x^y^cin;
       assign cout=(x&y)1(x&cin)l(y&cin);
       endmodule
module CRA(
       input [7:0]x,y
       input cin,
       output [7:0]f,
       output cout;
       )
       wire[8:0]c;
       assign c[0]=cin;
       A4bit fa0(x[0],y[0],c[0],f[0],c[1]);
       A4bit fal(x[1],y[1],c[0],f[1],c[2]);
       A4bit fa2(x[2],y[2],c[0],f[2],c[3]);
       A4bit fa3(x[3],y[3],c[0],f[3],c[4]);
       A4bit fa4(x[4],y[4],c[0],f[4],c[5]);
       A4bit fa5(x[5],y[5],c[0],f[5],c[6]);
       A4bit fa6(x[6],y[6],c[0],f[6],c[7]);
       A4bit fa7(x[7],y[7],c[0],f[7],c[8]);
       assign cout=c[8];
  endmodule

FPGA学习笔记(八)——3-8译码器的设计与验证 3-8译码器的设计与验证 阅读详情

相关推荐

3-8 译码器设计实验--VHDL

3-8 译码器设计实验–VHDL 一、实验目的 (1)学习并掌握Quartus II的使用方法 (2)学习使用原理图方法进行逻辑设计输入,并初步了解可编程器件设计的全过程 (3)熟悉ALTERA公司EDA设计工具软件Quartusll设计一个3-8译码器,并在实验开发系统上熟悉原理图输入及仿真步骤,掌握组合逻辑电路的设计及静态测试方法 二、实验仪器设备 (1) PC机一台。 (2)Quartus Ⅱ开发软件一套 (3)EDA实验开发系统一套 三、实验原理 译码是相对于编码的逆过程,在基于一定硬件支持下能是将

在月光下棕榈树的叶子在瑟瑟抖动 2万+

3-8译码器

3-8译码器设计及仿真

weixin_43828944的博客 2万+

一、关于Quartus和ModelSim的安装二、关于3-8译码器的实验仿真(一)对比分析Verilog生成的电路原理图和原始设计电路三、关于全加器的实验仿真(一)Verilog的1位全加器和

一、关于Quartus和ModelSim的安装请自行搜索方法,比较简单,本文使用quartus ii 13.1和Modelsim SE-10.4进行练习。

weixin_65210727的博客 758

三八译码器:原理与应用

三八译码器的原理与应用

TOM0078的博客 1万+

试用一片3-8译码器74LS138和其它必要的门电路设计一个一位全加器, 被加数为Ai, 加数为Bi, 低位来的进位为Ci-1, 本位和为Si, 本位对高位的进位为Ci

(1)根据题目的描述, 列出真值表. 一位全加器真值表 Ai Bi Ci-1 Si Ci 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 ...

weixin_42048463的博客 2万+

FPGA实战:从Verilog到DE2-115板载验证——4位全加器与3-8译码器的完整设计流程

本文详细介绍了FPGA开发中4位全加器与3-8译码器的完整设计流程,从Verilog代码编写到DE2-115板载验证。通过Quartus II软件实现硬件描述,结合DE2-115开发板进行功能仿真与硬件测试,帮助初学者快速掌握FPGA开发的核心技术。

weixin_30275415的博客 416

FPGA新手试手——Quartus实现4位全加器与3-8译码器

本次是初步学习Quartus的使用,实践过程中遇到了很多问题,但都一一解决了,在实验中我初步体会到了软硬件结合解决实际问题的一个过程(分析实际问题后将其抽象设计为数学逻辑问题,按照逻辑推导进行设计)。

qq_74179376的博客 2837

深入了解 CPU 的型号、代际架构与微架构!

深入了解 CPU 的型号、代际架构与微架构!

欢迎朋友,我是一名十多年开发经验的新手,希望多多指教。 3196

FPGA——4位全加器及3-8译码器的实现

通过本次实验,学会了使用Verilog语言来实现四位全加器及三八译码器的设计,并下载到DE2-115板子上进行测试,其结果都符合预期。由于是第一次接触到DE2-115,所以实验过程不太熟悉,耗时较多,但相信以后会更加熟练地操作。

2301_77119177的博客 1863

基于Python API的ECMWF大气数据批量下载与自动化处理实践

本文详细介绍了如何利用Python API实现ECMWF大气数据的自动化批量下载与处理。针对遥感分析中手动下载ERA5等数据的痛点,文章提供了从API密钥配置、核心脚本编写到元数据解析、任务队列调度及数据质量检查的全流程实践指南,旨在帮助科研与工程人员高效获取并处理大规模气象数据。

u8v9w0x1y的博客 479

避坑指南:Cursor AI生成Flutter代码时最容易翻车的5个配置细节

本文深入剖析了使用Cursor AI生成Flutter代码时,因.cursorrules配置文件不当而导致的五大常见问题。重点探讨了如何通过制定清晰、具体的规则,避免状态管理混乱、设计图输入低效、项目架构脱节、性能隐患及规则维护缺失等陷阱,从而将AI转化为高效、可靠的开发伙伴,提升代码质量和团队协作效率。

wdx0123456的博客 415

3-8译码器和1位全加器的verilog实现

3—8译码器的真值表如下其电路图如下我们打开quartus,新建一个verilog文件,写出下列代码选择生成RTL电路。

2301_76358249的博客 1370

YOLO26改进策略【YOLO和Mamba】| 替换骨干 Mamba-YOLO26-L !!! 最新的发文热点

Vision Clue Merge模块在Mamba - YOLO模型中同样重要,主要负责在模型的下采样过程中处理特征图,为后续的特征融合和目标检测任务提供更有效的信息。

Limiiiing的博客 472

用verilog实现3-8译码器和全加器

1.根据规律实现往后的代码和更多位的全加器。2.可以运行代码,来快速的到电路图。3.还需多加练习,来加强verilog的熟练度。

Chaucerbu的博客 645

WPF实战案例 | C# WPF实现大学选课系统

WPF实战案例_C# WPF实现大学选课系统, C# WPF实现大学选课系统,大作业,毕业设计,该系统实现多身份登录、修改密码、课程的管理,个人信息的管理等功能。这个源码让你快速搭建自己的应用程序,注释完整,代码规范,各种风格都有,代码上手简单,代码独立,可以直接用程序打开,运行使用。也可直接点击EXE运行程序。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4624

机床上位机实战:CNC设备数据采集+工艺参数存储全流程(附C#代码+SQL设计)

如果能正常输出转速和状态,说明通信通了——这步是基础,没通的话别往下走,先查CNC的IP对不对、Modbus功能有没有开、地址是不是错了(我当初卡了2小时,发现是Fanuc的Modbus从站地址设成了2,不是默认1)。这篇文章就把整个开发过程拆透:从CNC通信协议选型,到数据采集代码落地,再到工艺参数的数据库设计,连中间踩过的“Fanuc系统寄存器地址对应错”“断连后数据补传”这些坑都给大家说清楚,新手跟着做也能跑通。工艺参数要跟“工单”和“设备”绑定,不然查的时候不知道是哪个工单、哪台设备的参数。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 792

【Verilog编程】基于QUartus和Modesim的4位全加器和3-8译码器

一个八段数码管由a,b,c,d,e,f,g,dp八个二极管组成,如上图所示,要使数码管显示不同的数字,只需点亮对应的LED即可。如:数码管显示“0”,则a,b,c,d,e,f六个LED亮,g,dp这两个LED灭,即可显示“0”。将3-8译码器的输出连接到八段数码管的各个段上,具体来说,可以将译码器输出Y0到Y6分别连接到数码管的a到g段,Y7可以用来控制小数点dp。通过改变3-8译码器的输入,选择性的点亮数码管的某些段,从而显示出所需要的数字。// 显示0(段码:0x3F)// 显示3(段码:0x4F)

2201_75516394的博客 1177

42、多媒体与虚拟现实在艺术和影视领域的创新应用

本文探讨了多媒体与虚拟现实在艺术和影视领域的创新应用,涵盖三个典型案例:影视与人类学融合项目通过协作模式模糊作者与观众界限,推动文化文献的发展;交互式数字短片《分手》利用基于对象的广播技术探索个性化影视体验;威尼斯双年展瑞士馆4D项目则通过虚拟现实技术实现文化遗产的数字化展示。这些案例展示了技术在叙事、用户体验及文化保护中的深度应用,并展望了未来技术融合、个性化深化与文化遗产传承的发展趋势。

kappa的博客 114

VHDL实验四:3-8 译码器(含使能端)、四位全加器

一、实验目的 1.掌握简单的 VHDL 程序设计。 2.掌握用 VHDL 对组合逻辑 3-8 译码器电路的建模。 二、实验原理 1、3/8 译码器的逻辑功能如下表: A B C /ENA Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0

White__Sun的博客 6390

【导航理论&实战篇】四足机器人弹簧倒立摆(SLIP)动力学模型

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对四足机器人动力学模型-VMC、SLIP和浮动机体模型做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章四足机器人弹簧加载倒立摆(SLIP)动力学模型是一种用于描述和分析四足机器人在运动过程中动态特性的理论模型。这种模型将四足机器人的腿部简化为弹簧,而机器人的身体则被视为一个倒立摆,这样的抽象使得研究者能够更容易地分析和控制机器人的运动。提示:以下是本篇文章正文内容。

qq_35635374的博客 806

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

DE2115实现4位全加器和3-8译码器(FPGA)

Quartus 是一款综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。

qq_74824173的博客 1135

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

FPGA-DE2115开发板实现4位全加器、3-8译码器。

此外以下没有关于38译码器以及4位全加器在logism上的实现以及波形图模拟在之前的文章中也有相关实验。注意事项:在烧录时可能没有出现相应USB选项可以先去设备管理更新一下驱动再到Quartus添加。在以上实现过程中对Quartus相关软件使用有了进一步掌握。安装的是18.0的版本。网上的相关教程也很多就不多赘述。实际上实现过程基本上相同仅有代码以及端口引脚设置不同。一直选择next然后finish。一直选择next然后finish。1.quartus新建工程。1.quartus新建工程。

weixin_74316506的博客 725

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

用 Verilog 设计一个3-8译码器、一个多位全加器和一个16位算术逻辑单元 (ALU)

代码中的 n 表示位数,这里 n = 16.RTL 图(1位全加器内部已省略)与4位串行全加器类似。verilog 代码。verilog 代码。verilog 代码。verilog 代码。verilog 代码。verilog 代码。

cqjtu_pengzifu的博客 2616

74LS138 3/8译码器应用:3种扩展方案实现4-16译码与全加器设计

本文深入探讨74LS138 3/8译码器的进阶应用,详细介绍三种4-16线译码器扩展方案及全加器设计方法。通过级联扩展、使能端复用和门电路组合等方案,展示如何高效利用数字逻辑芯片实现复杂功能,为数字系统设计提供实用参考。

weixin_33910759的博客 347

用3-8线译码器及门电路实现全加器

138真值表 输入 输出 G1 /G2A /G2B A2 A1 A0 /Y0 /Y1 /Y2 /Y3 /Y4 /Y5 /Y6 /Y7 × 1 × × ...

weixin_30537451的博客 2万+

【Verilog实战】生成38译码器和全加器

Verilog的许多编程思路同C语言相似,语法也相近。要格外注意使用过程语句编程时,输出端口要注意reg赋值。

weixin_72935906的博客 3670
上一篇: 使用与非门搭建基本RS、D触发器
下一篇: 51单片机架构与汇编指令
ooolips
博客等级 码龄4年 129粉丝 25原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值