精华内容
下载资源
问答
  • 八位二进制转三位十进制电路multisim源文件,十进制数字用数码管显示,multisim13及以上版本的软件可以正常打开仿真。
  • -十进制译码器74LS42实验电路multisim源文件,multisim10及以上版本可以正常打开仿真,是教材上的电路,可以直接仿真,方便大家学习。
  • 用VHDL语言实现十进制计数器,并用七段译码器显示
  • “共阳极七段发光二极管的-十进制译码器”建模与仿真,vivado2014.2工程,可直接使用,包含仿真,设计。
  • 本关需要你根据所学的组合逻辑及数字电路的知识完成一个16进制7段数码显示译码器的设计,验证满足一个16进制7段数码显示译码器的规则,根据逻辑真值表和逻辑表达式完成表决功能。熟悉Quartus II的Verilog HDL文本...

    本关需要你根据所学的组合逻辑及数字电路的知识完成一个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    
           
    
    展开全文
  • 文章目录一、实验目的、实验内容三、实验设计 一、实验目的 掌握一般性计数器的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进制显示。原理图如下:
    在这里插入图片描述

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

    展开全文
  • 通过本实验熟悉开发环境Simulink 的使用,能够使用基本的逻辑门电路设计并实现3-8二进制译码器
  • 3位二进制译码器

    2013-03-06 16:45:41
    labview编程,实现3位二进制译码器
  • 西南交通数电实验
  • 八位二进制到BCD multisim仿真源文件,使用的方案是74LS283+74LS08+74LS48,multisim10及以上的版本可以直接打开仿真
  • 八位二进制转bcd码

    2011-07-17 15:20:35
    用multisim11来实现八位二进制对bcd码得转换。其中包含了multisim实验电路图,可进行仿真看结果。
  • 首先给出二进制码转换为十进制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.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。

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

    展开全文
  • 之前写的找不到0.0,就只剩这点了。

    之前写的找不到0.0,就只剩这点了。

     

    展开全文
  • 十六进制7段码显示译码器设计实验。 、源代码 说明:本实验使用的是共阴数码管。 //---------------------------------------------------------------------------------------- // File name: Nixie_tube_disp /...
  • 大学生课程要求,是要做一个0-100℃的温度计,用三个这样的晶体管 然后ad转换器出来的是八位二进制 我在网上找到的仿真是自己做了一译码器 如图 但是这一块内容有点超纲了 请问有什么简单一点的办法可以译成bcd码?
  • 二进制和格雷码之间的转换

    千次阅读 2020-07-20 15:20:01
    文章目录格雷码特点二进制和格雷码对照表二进制转格雷码HDL实现格雷码转二进制HDL实现参考资料 格雷码特点 格雷码属于可靠性编码,是一种错误最小化的编码方式。因为,虽然自然二进制码可以直接由数/模转换转换成...
  • 用MaxPlusII实现的六位可逆十六进制可逆计数器和七段译码器,在altera的芯片上亲测可用,用MaxPlusII打开顶层设计图以后,直接下载到芯片上就可以运行了。
  • 数字电路-二进制转BCD码

    千次阅读 2019-10-04 00:31:33
    BCD码实际上就是将原本的十进制数的每一位用一个4位二进制数表示,每一位0-9。 二进制4位能够表达的数字范围是0-15。 由此可见BCD码的一段与普通四位二进制来表示十进制位有6的进制差。所以这就是二进制转化为...
  • 74LS138译码器实现2位二进制乘法器-QuartusII 软件仿真 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录74LS138译码器实现2位二进制乘法器-QuartusII 软件仿真一、74LS138译码器介绍二...
  • FPGA零基础学习:基于FPGA的二进制转BCD设计(附代码) 本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、...
  • library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned... cq10_out,cq2_out:out std_logic_vector(3 downto 0) ); end led_24;architecture behav of led_24 is component led24 port(clk,clr,en
  • 16进制7段译码器仿真

    2021-06-21 15:02:08
    数字逻辑基础与Verilog设计教材书P114页实验4.34 16进制7段译码器仿真。 ,实验目的 让读者用case选择语句的时候注意输出(leds)矢量与段代码之间的关系,用四位的矢量表示十六进制(hers),用七位的矢量表示七...
  • 第二周 在QuartusⅡ环境中用VHDL语言实现四位二进制减法(缺0000 0001 0010),在仿真上显示结果波形,并下载到目标芯片上,在实验箱上观察输出结果。在Multisim环境中仿真实现四位二进制减法计数器(缺0000 ...
  • 二进制转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码可以采用Double_dabble算法,维基百科有详细介绍,简单可称为“移位加3”算法。 8位二进制数243,移位加3计算过程: 16位二进制65244,移位加3计算过程: verilog实现 方法1:纯组合逻辑实现 来自...
  • library IEEE; use IEEE.std_logic_1164.all; entity sysegd is port (x : in std_logic_vector(3 downto 0); s : out std_logic_vector (6 downto 0)); end entity;...architecture bin27seg_arch of sysegd is ...
  • 文章目录A 译码器A.a 二进制译码器A.b 二-十进制译码器A.c 显示译码器A.d MSI译码器应用示例 A 译码器 A.a 二进制译码器 任意时刻只有一个输出信号是有效的。 VCCV_{CC}VCC​为芯片的工作电源,通常为+5V,A2,A1,...
  • BCD译码器电路multisim源文件,multisim13以上版本可打开运行
  • 我们把所使用的每一种二进制代码状态都赋于特定的含义,表示一个特定的信号或对象,叫编码。如用四位二进制数的0000~1001这十种状太,分别表示0~9这十个十进制数码,称为8421编码。反过来把代码的特定含义翻译出来,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,129
精华内容 5,651
关键字:

10进制转二进制译码器

友情链接: memorydistributing.rar