精华内容
下载资源
问答
  • 八位二进制转三位十进制电路multisim源文件,十进制数字用数码管显示,multisim13及以上版本的软件可以正常打开仿真。
  • -十进制译码器74LS42实验电路multisim源文件,multisim10及以上版本可以正常打开仿真,是教材上的电路,可以直接仿真,方便大家学习。
  • “共阳极七段发光二极管的十进制译码器”建模与仿真,vivado2014.2工程,可直接使用,包含仿真,设计。
  • 用VHDL语言实现十进制计数器,并用七段译码器显示
  • 文章目录一、实验目的、实验内容三、实验设计 一、实验目的 掌握一般性计数器的VHDL设计方法,熟悉程序文本和原理图结合方法设计电路。...首先用CASE语句设计7段显示译码器电路,仿真验证其正确性

    一、实验目的

    掌握一般性计数器的VHDL设计方法,熟悉程序文本和原理图结合方法设计电路。掌握CASE语句的基本使用方法。

    二、实验内容

    1. 首先用VHDL语言设计10进制计数器,要求电路具有复位端和使能端,仿真验证其正确性,并将其封装成一个元件;
    2. 用两个10进制计数器扩展成一个100进制计数器,注意两个10进制计数器间管脚的连接方式,画出其原理图并用QUARTUSⅡ软件仿真验证,仿真验证所设计电路的功能;
    3. 首先用CASE语句设计7段显示译码器电路,仿真验证其正确性,并将其封装成一个元件;用7段显示译码器将100进制计数器的两组4位二进制输出转换为10进制显示,画出其原理图并用QUARTUSⅡ软件仿真验证.
      在这里插入图片描述
      在这里插入图片描述

    三、实验设计

    1.首先用VHDL语言设计一个10进制计数器,该计数器具有复位端和使能端,因此需要使用条件语句实现其功能,并且应该是四位的输入输出。VHDL代码如下:

    Library ieee;
    Use ieee.Std_Logic_1164.All;
    Use ieee.Std_Logic_Unsigned.All;
    Entity count10 is
    	port(clk,rst,en,load: in Std_Logic;
    					data: in Std_Logic_Vector (3 downto 0);
    					dout: out Std_Logic_Vector (3 downto 0);
    					cout: out Std_Logic);
    End Entity count10;
    Architecture bhv of count10 is
    begin
    	process (clk,rst,en,load)
    		variable q: Std_Logic_Vector (3 downto 0);
    		begin
    			if rst='0' then q:=(others=>'0');
    			elsif clk 'event and clk='1' then
    				if en='1' then
    					if (load='0') then q:=data; else
    						if q<9 then q:=q+1;
    						else q:=(others=>'0');
    						end if;
    					end if;
    				end if;
    			end if;
    			if q="1001" then cout<='1';
    			else cout<='0';
    			end if;
    			dout<=q;
    	End process;
    End Architecture bhv;
    

    验证其正确性,仿真波形图如下:
    在这里插入图片描述
    2. 用两个10进制计数器扩展成一个100进制计数器,注意其引脚的连接方式。
    在这里插入图片描述
    仿真验证其正确性,波形图如下:
    在这里插入图片描述
    3. 用CASE语句设计7段显示译码器电路,根据不同数字对应显示不同数码管的情况,设计正确的对应关系。VHDL代码如下:

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL ;
    use Ieee.std_logic_unsigned.all;
    entity led7 is
    	port (indata: in std_logic_vector(3 downto 0);
    		  odata: out std_logic_vector(6 downto 0));
    end entity led7;
    architecture bhv of led7 is
    	begin
    	process (indata)
    	begin
    		case (indata) is
    			when "0000" => odata<= "0111111" ;
    			when "0001" => odata<= "0001110" ;
    			when "0010" => odata<= "1011011" ;
    			when "0011" => odata<= "1001111" ;
    			when "0100" => odata<= "1100110" ;
    			when "0101" => odata<= "1101101" ;
    			when "0110" => odata<= "1111101" ;
    			when "0111" => odata<= "0000111" ;
    			when "1000" => odata<= "1111111" ;
    			when "1001" => odata<= "1101111" ;
    			when others => null;
    		end case;
    	end process;
    end architecture bhv;
    

    将其封装成一个元件。在VHDL描述页面,选file→create/update→create symbol files for current file,把编写的代码封装成一个元件。
    在这里插入图片描述

    用7段显示译码器将100进制计数器的两组4位二进制输出转换为10进制显示。原理图如下:
    在这里插入图片描述

    验证其正确性,仿真波形如下:
    在这里插入图片描述

    展开全文
  • 八位二进制到BCD multisim仿真源文件,使用的方案是74LS283+74LS08+74LS48,multisim10及以上的版本可以直接打开仿真
  • 首先给出二进制码转换为十进制BCD码的几个步骤(以8bit二进制码为例): 1.将二进制码左移一位(或者乘2) 2.找到左移后的码所对应的个,十,百位。 3.判断在个位和百位的码是否大于5,如果是则该段码加3。 ...

    首先给出二进制码转换为十进制BCD码的几个步骤(以8bit二进制码为例):

                   1.将二进制码左移一位(或者乘2)

                   2.找到左移后的码所对应的个,十,百位。

                   3.判断在个位和百位的码是否大于5,如果是则该段码加3。

                   4.继续重复以上三步直到移位8次后停止。

    下面是一个例子 ,将 1111_1111 转换为 BCD码 ,如果8bit数据最终移位得到18bit 数据 ,那么个位,十位,百位分别对应12~9,16~13,18~17位。                        

                  

    代码如下:

    `timescale      1ns/1ps
    // *********************************************************************************
    // Project Name :       
    // Author       : Wkj
    // Email        : 
    // Blogs        : https://hellocode.blog.csdn.net/article/details/109755812
    // File Name    : Bin_BCD.v
    // Module Name  :
    // Called By    :
    // Abstract     :
    //
    // CopyRight(c) 
    // All Rights Reserved
    //
    // *********************************************************************************
    // Modification History:
    // Date         By              Version                 Change Description
    // -----------------------------------------------------------------------
    // 2018/8/12    NingHeChuan       1.0                     Original
    //  
    // *********************************************************************************
    
    module Bin_BCD
    #(
        parameter       DATA_WIDTH  =   16,
        parameter       SHIFT_WIDTH =   5,
        parameter       SHIFT_DEPTH =   16
        
    )
    (
        input               clk,
        input               rst_n,
        input               tran_en,
        input       [DATA_WIDTH - 1:0]  data_in,
        output   reg        tran_done,
        output      [3:0]   thou_data,      //千位
        output        [3:0]    hund_data,      //百位
        output        [3:0]    tens_data,      //十位
        output        [3:0]    unit_data       //个位
    
    );
    //-------------------------------------------------------
    localparam  IDLE    =   3'b001;
    localparam   SHIFT   =   3'b010;
    localparam   DONE    =   3'b100;
    
    //-------------------------------------------------------
    reg     [2:0]   pre_state;
    reg     [2:0]   next_state;
    //
    reg     [SHIFT_DEPTH-1:0]   shift_cnt;
    //
    reg     [DATA_WIDTH:0]  data_reg;
    reg     [3:0]   thou_reg;
    reg        [3:0]    hund_reg;
    reg        [3:0]    tens_reg;
    reg        [3:0]    unit_reg; 
    reg     [3:0]   thou_out;
    reg        [3:0]    hund_out;
    reg        [3:0]    tens_out;
    reg        [3:0]    unit_out; 
    wire    [3:0]   thou_tmp;
    wire    [3:0]    hund_tmp;
    wire    [3:0]    tens_tmp;
    wire    [3:0]    unit_tmp;
    
    //-------------------------------------------------------
    //FSM step1
    always  @(posedge clk or negedge rst_n)begin
        if(rst_n == 1'b0)begin
            pre_state <= IDLE;
        end
        else begin
            pre_state <= next_state;
        end
    end
    
    //FSM step2
    always  @(*)begin
        case(pre_state)
        IDLE:begin
            if(tran_en == 1'b1)
                next_state = SHIFT;
            else 
                next_state = IDLE;
        end
        SHIFT:begin
            if(shift_cnt == SHIFT_DEPTH + 1)
                next_state = DONE;
            else 
                next_state = SHIFT;
        end
        DONE:begin
            next_state = IDLE;
        end
        default:next_state = IDLE;
        endcase
    end
    
    //FSM step3
    always  @(posedge clk or negedge rst_n)begin
        if(rst_n == 1'b0)begin
            thou_reg <= 4'b0; 
            hund_reg <= 4'b0; 
            tens_reg <= 4'b0; 
            unit_reg <= 4'b0; 
            tran_done <= 1'b0;
            shift_cnt <= 'd0; 
            data_reg <= 'd0;
        end
        else begin
            case(next_state)
            IDLE:begin
                thou_reg <= 4'b0; 
                hund_reg <= 4'b0; 
                tens_reg <= 4'b0; 
                unit_reg <= 4'b0; 
                tran_done <= 1'b0;
                shift_cnt <= 'd0; 
                data_reg <= data_in;
            end
            SHIFT:begin
                if(shift_cnt == SHIFT_DEPTH + 1)
                    shift_cnt <= 'd0;
                else begin
                    shift_cnt <= shift_cnt + 1'b1;
                    data_reg <= data_reg << 1;
                    unit_reg <= {unit_tmp[2:0], data_reg[16]};
                    tens_reg <= {tens_tmp[2:0], unit_tmp[3]};
                    hund_reg <= {hund_tmp[2:0], tens_tmp[3]};
                    thou_reg <= {thou_tmp[2:0], hund_tmp[3]};
                end
            end
            DONE:begin
                tran_done <= 1'b1;
            end
            default:begin
                thou_reg <= thou_reg; 
                hund_reg <= hund_reg; 
                tens_reg <= tens_reg; 
                unit_reg <= unit_reg; 
                tran_done <= tran_done;
                shift_cnt <= shift_cnt; 
            end
            endcase
        end
    end
    //-------------------------------------------------------
    always  @(posedge clk or negedge rst_n)begin
        if(rst_n == 1'b0)begin
            thou_out <= 'd0;
            hund_out <= 'd0;
            tens_out <= 'd0;
            unit_out <= 'd0; 
        end
        else if(tran_done == 1'b1)begin
            thou_out <= thou_reg;
            hund_out <= hund_reg;
            tens_out <= tens_reg;
            unit_out <= unit_reg;
        end
        else begin
            thou_out <= thou_out;
            hund_out <= hund_out;
            tens_out <= tens_out;
            unit_out <= unit_out;
        end
    end
    
    
    //-------------------------------------------------------
    assign  thou_tmp = (thou_reg > 4'd4)?  (thou_reg + 2'd3) : thou_reg;
    assign  hund_tmp = (hund_reg > 4'd4)?  (hund_reg + 2'd3) : hund_reg;
    assign  tens_tmp = (tens_reg > 4'd4)?  (tens_reg + 2'd3) : tens_reg; 
    assign  unit_tmp = (unit_reg > 4'd4)?  (unit_reg + 2'd3) : unit_reg; 
    
    assign thou_data = thou_out;
    assign hund_data = hund_out;
    assign tens_data = tens_out;
    assign unit_data = unit_out;
    
    
    endmodule 

    1.本文部分素材来源网络,版权归原作者所有,如涉及作品版权问题,请与我联系删除。

    2.未经原作者允许不得转载本文内容,否则将视为侵权;

    3.转载或者引用本文内容请注明来源及原作者;

    4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

    下面是我的个人微信公众号,关注【一个早起的程序员】精彩系列文章每天不断。

    展开全文
  • 西南交通数电实验
  • 文章目录A 译码器A.a 进制译码器A.b -十进制译码器A.c 显示译码器A.d MSI译码器应用示例 A 译码器 A.a 进制译码器 任意时刻只有一个输出信号是有效的。 VCCV_{CC}VCC​为芯片的工作电源,通常为+5V,A2,A1,...

    【数电专栏】

    A 译码器

    译码和译码器:译码是编码的逆过程,译码器的功能与编码器相反,它将具有特定含义的不同二进制辨别出来,并转换成控制信号.

    译码器可分为两种类型,一种是将一系列代码转换成与之一一对应的有效信号。这种译码器可称为唯一地址译码器,它常用于计算机中对存储器单元地址的译码,即将每一个地址代码转换成一个有效信号,从而选中对应的单元。另一种是将一种代码转换为另一种代码,所以也称为代码变换器。

    在这里插入图片描述

    A.a 二进制译码器

    在这里插入图片描述
    任意时刻只有一个输出信号是有效的。
    在这里插入图片描述
    V C C V_{CC} VCC为芯片的工作电源,通常为+5V, A 2 , A 1 , A 0 A_2,A_1,A_0 A2,A1A0为三个输入信号,通常高电平输入为3V,低电平输入为0V。
    在这里插入图片描述
    低电平0经过非门得到3
    Y 6 Y_6 Y6输出信号为3.7V,输入的3+电源在二极管的0.7
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述

    A.b 二-十进制译码器

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    A.c 显示译码器

    在这里插入图片描述
    二极管共阳极:八段共阳二极管
    二极管共阴极:八段共阴二极管
    箭头:发光二极管
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    1010到1111为约束项

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    增加红色部分是为了提升 Y a 到 Y g Y_a到Y_g YaYg的输出电流,驱动数码管中的发光二极管。
    在这里插入图片描述

    A.d MSI译码器应用示例

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述


    图片来源:《数字电子技术基础》 国防科技大学

    ps:非门前加一圈表示低电平有效。

    展开全文
  • 八位二进制转bcd码

    2011-07-17 15:20:35
    用multisim11来实现八位二进制对bcd码得转换。其中包含了multisim实验电路图,可进行仿真看结果。
  • 大学生课程要求,是要做一个0-100℃的温度计,用三个这样的晶体管 然后ad转换器出来的是八位二进制 我在网上找到的仿真是自己做了一译码器 如图 但是这一块内容有点超纲了 请问有什么简单一点的办法可以译成bcd码?
  • 本关需要你根据所学的组合逻辑及数字电路的知识完成一个16进制7段数码显示译码器的设计,验证满足一...7 段数码是纯组合电路,通常的小规模专用 IC,如 74 或 4000 系列的器件只能作十进制 BCD 码译码,然而数字系统中

    本关需要你根据所学的组合逻辑及数字电路的知识完成一个16进制7段数码显示译码器的设计,验证满足一个16进制7段数码显示译码器的规则,根据逻辑真值表和逻辑表达式完成表决功能。熟悉Quartus II的Verilog HDL文本设计流程,掌握组合逻辑电路的设计仿真和硬件测试的方法。最后完善一个16进制7段数码显示译码器电路的功能描述风格Verilog HDL 代码。

    相关知识
    逻辑原理
    7 段数码是纯组合电路,通常的小规模专用 IC,如 74 或 4000 系列的器件只能作十进制 BCD 码译码,然而数字系统中的数据处理和运算都是 2 进制的,所以输出表达都是 16 进制的,为了满足 16 进制数的译码显示。
    7 段译码器的输出信号 LED7S 的 7 位分别接如下图所示数码管的 7 个段,高位在左,低位在右。例如当 LED7S输出为“1101101”时,数码管的 7 个段: g,f,e,d,c,b,a 分别接 1,1,0,1,1,0,1;接有高电平的段发亮,于是数码管显示“5”。注意,这里没有考虑表示小数点的发光管。
    7 段数码显示译码器设计采用 case 语句对数码管的七个段分别进行赋值 0 或 1,实现数字的显示。

    共阴数码管及其电路
    在这里插入图片描述

    module decl7s_test(a,led7s);
          input [3:0] a;
          output [6:0] led7s;
          reg [6:0] led7s;
      always @(a)
    // 请在下面添加代码,完成7段数码显示译码器显示
    /* Begin */
      begin 
           case(a)
                4'b0000:led7s = 7'b0111111;
                4'b0001:led7s = 7'b0000110;
                4'b0010:led7s = 7'b1011011;
                4'b0011:led7s = 7'b1001111;
                4'b0100:led7s = 7'b1100110;
                4'b0101:led7s = 7'b1101101;
                4'b0110:led7s = 7'b1111101;
                4'b0111:led7s = 7'b0000111;
                4'b1000:led7s = 7'b1111111;
                4'b1001:led7s = 7'b1101111;
                4'b1010:led7s = 7'b1110111;
                4'b1011:led7s = 7'b1111100;
                4'b1100:led7s = 7'b0111001;
                4'b1101:led7s = 7'b1011110;
                4'b1110:led7s = 7'b1111001;
                4'b1111:led7s = 7'b1110001;
                default: led7s = 7'b0000000;
            endcase
        end 
    
    
    
    /* End */
    endmodule    
           
    
    展开全文
  • 二进制和格雷码之间的转换

    千次阅读 2020-07-20 15:20:01
    因为,虽然自然二进制码可以直接由数/模转换转换成模拟信号,但在某些情况,例如从十进制的3转换为4时二进制码的每一位都要变,能使数字电路产生很大的尖峰电流脉冲。而格雷码则没有这一缺点,它在相邻位间转换时...
  • 二进制转BCD码(加3移位法)动态显示实例 本文实现一个二进制转十进制的电路,8位拨码开关(SW7-SW0)作为一组8位二进制输入信号,拨码开关SW11作为复位开关,拨码开关SW10作为使能开关,将8位二进制输入转为3位...
  • 还是以38译码器为例子 vhdl常用的语法无非就 用在进程下边: 1.if-else-elsif-end if; 2. case x is when " “=>b<=” “; when others=>b<=“Z”; end case; 用在结构体下 1.a<=” “when...
  • 数字电路-二进制转BCD码

    千次阅读 2019-10-04 00:31:33
    BCD码实际上就是将原本的十进制数的每一位用一个4位二进制数表示,每一位0-9。 二进制4位能够表达的数字范围是0-15。 由此可见BCD码的一段与普通四位二进制来表示十进制位有6的进制差。所以这就是二进制转化为...
  • FPGA零基础学习:基于FPGA的二进制转BCD设计(附代码) 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、...
  • 实训七 计数、译码、显示电路 熟悉通用型十进制计数器、译码器、显示器的逻辑功能; 2.掌握计数器、译码器、显示器的应用。 、实训内容 1.用十进制计数器、译码器、显示器组成一个十进制计数显示电路。
  • 用38线译码器74ls138,实现3位二进制的四舍五入,38线译码器输入对应的110为十进制数6,所以对应的输出应该为最小项m6',即Y0Y1Y2Y3Y4Y5Y6Y7为11111101十进制1.001转二进制,保留八位小数是多少?(要四...1.000...
  • 常见的编码有:二进制编码、二—十进制编码、优先编码等。二进制编码一位二进制代码有0和1,可以表示两个信号,两位二进制代码有00,01,10和11,可以表示4个信号, 屁位二进制代码有2n种,可以表示2n个...
  • 二进制数转换成BCD码的Verilog实现

    千次阅读 2020-07-15 16:30:19
    通常在显示温度、数码管、电压等数据时,通常需要将二进制数据十进制进行显示。最常用的方法是将二进制码转换成BCD码(8421)。 8421码:它只选用了四位二进制码中前10组代码,即用0000~1001(0-9)分别代表它所...
  • library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity led_24 is port(clk,clr,ena:in std_logic; cq10_out,cq2_out:out std_logic_vector(3 downto 0) ); end led_24;...
  • **BCD码:**4位二进制数来表示一位十进制数的编码,例如十进制数279,转换为BCD码就是’h177。 算法实现流程:二进制数据每次左移一位,每四位判断是否大于4,满足条件则加四,不满足继续移位。 Verilog实现:FSM...
  • 1:微处理和微型计算机的发展自1946年世界上第一台计算机问世以来,计算机科学与技术得到了飞速的发展,短短 50多年时间,已经经历了电子管、晶体管、集成电路、超大规模集成电路等几代计算机的 更替。计算机按照其...
  • 《四位二进制8421BCD码加法》由会员分享,可在线阅读,更多相关《四位二进制8421BCD码加法(9页珍藏版)》请在人人文库网上搜索。1、课程设计报告设计题目: 四位二进制8421BCD码加法 学 院: 理学院 专 业: 09...
  • 74HC138&门电路设计一位全减电路  这个是数电课本上的一个习题 (上课效率基本为0 所以只能下课 自己学点 所有的课程都是 这样  )刚明白这个题目 写下来 也让自己加深一下理解 也希望可以帮助到大家 哈哈...
  • 四位二进制乘法.doc

    2021-05-20 16:40:08
    四位二进制乘法设计报告原理此四位乘法主要运用多次错位相加运算来实现乘法运算。由开关控制输入高电平或低电平产生两个二进制数(高电平有效),利用与门实现一位和四位的乘积运算,再将两次的乘积输入加法,...
  • 我们把所使用的每一种二进制代码状态都赋于特定的含义,表示一个特定的信号或对象...如用四位二进制数的0000~1001这十种状太,分别表示0~9这十个十进制数码,称为8421编码。反过来把代码的特定含义翻译出来,称为译码
  • VHDL语言实现32位二进制BCD码

    千次阅读 2019-06-09 10:51:30
    使用FPGA开发板上的数码管显示...我用除取余的方法,用VHDL写了32位二进制BCD码代码。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTI...
  • 课程设计报告设计题目: 四位二进制8421BCD码加法学 院: 理学院专 业: 09电子信息科学与技术班 级: 1班学 号: 200931120102; 200931120103; 200931120105姓 名: 陈俊宇 陈明源 邓坤勇电子邮件: 1205335255@...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,763
精华内容 2,705
关键字:

二进制转十进制译码器