基于VHDL数控分频器设计

合集下载

VHDL数字系统课程设计报告-5分频器的设计

VHDL数字系统课程设计报告-5分频器的设计

图2 1
电子与信息工程系 2013 年 12 月
占空比为 1:1 的奇数分频器
(2) 占空比为 X/(2N+1)或(2N+1-X)/(2N+1)分频,用模(2N+1)计数器模块可以实 现。取 0 至 2N-1 之间一数值 X(0),当计数器时钟上升沿从 0 开始计数到 X 值时输出时钟翻 转一次,在计数器继续计数达到 2N 时,输出时钟再次翻转并对计数器置一复位信号,使之 从 0 开始重新计数,即可实现。如图 4 所示,由四个计数器生成了两个占空比 2:3 的分频 器 step1、和 step2。step1 由上升沿触发器出发,step2 由下降沿触发器出发。然后经过或 门生成占空比为 1:1 的分频器。
要设计占空比为 50%的奇数(n)倍分频器,可以先分别设计从时钟上升沿、下降沿开始 的占空比为(n-1)/2n 的分频器 A,B。将 A 与 B 相或结果就是占空比为 50%的奇数倍分频器。 因为 A,B 产生的信号的高电平持续时间均比低电平持续时间少一个时钟周期,B 相对 A 来说 可以说是延时了半个时钟,那么 A 与 B 进行或运算,则结果的高电平持续时间增加了半个时 钟周期,而低电平持续时间则减少了半个时钟周期。因此占空比达到 50%。
四、系统调试与结果............................................................................................. 4 五、主要元器件与设备......................................................................................... 5 六、课程设计体会与建议..................................................................................... 5

基于VHDL的全数字分数分频器设计

基于VHDL的全数字分数分频器设计
前向通道中分频器实现方式主要影响输出波 形的占空比.若前向通道采用D触发器.则输出波形 趋于对称,通常输出波形占空比为N:N或者Ⅳ:fⅣ+11, 具体情况由输出波形的周期相对于输入波形周期 的倍数是否为整数决定。若输出波形的周期为 输入周期的整数倍.则输出波形占空比为N:N, 否则为Ⅳ:(N+I)。
若前向通道采用模Ⅳ计数器实现.则输出波形 高电平占0.5或者1个输入波形周期宽度,具体是0.5 还是1.同样由输出波形周期是否为输入波形周期 的整数倍决定。若为整数倍,则占1个输入波形周期 宽度.否则占0.5个。
图4是前向通道采用了2个D触发器级联实现4 分频的仿真结果,输出波形elk—out占空比为3:4或者 4:4.分别对应于输出周期为输入周期的3.5倍与4倍 的情况。
m=b一(Ⅱrood b),
F。,,=I…a/5]+1,
疋=[胡],
(、 37 )
/z=a rood b
其中f.]表示取整,o mod 6表示求。除以b的余数。 如要设计一个5.1分频的分频器。则昭51,6=10,所
以由式(3)可得m=9,E---6,F。=5,n=l。 2.2任意分数分频器的实现
分频器的实现主要由两个模块实现.一个模块 是可预置数的可控双模分频器.另一个模块是可预
万方数据
其慨。=志≯。^=寿。
网2 3.5分频器仿真波j髟
采用VHDL语言设计上述电路(令N=4).并进行 仿真得到波形如图2所示.图中clk in为输入波形.比
锨五和clk—in可以得出:勘的每个周期中f.kgclk.in少
一个正脉冲。但是.观察模Ⅳ计数器输出temp.就可 以发现,实际上在矗的每个周期中£是ELelkin多了一个 正脉冲j分析如下:没此时刻为图中五的第一个高电 平下降沿前一刻,^=1,然后clk in由1变为0,导致异 或门的输出£变为1,£的上升沿使模Ⅳ(模4)计数器 计数.计数器结果加1。由于计数器计到了最大值, 故clk out输出高电平1.elk out的上升沿又促使2分频 器工作,使磊由1变为0,然后兀反馈回异或门得输人 端,与ckl in通过异或门使7:变为0.反馈使得‘由0变 为1.以后经过一段时问又返回0。

VHDL分频器课程设计

VHDL分频器课程设计

VHDL分频器课程设计一、课程目标知识目标:1. 学生能理解VHDL语言的基本概念,掌握VHDL语言的基本语法结构;2. 学生能掌握分频器的工作原理,了解分频器在数字系统中的应用;3. 学生能运用VHDL语言设计简单的分频器电路,并实现预期的分频功能。

技能目标:1. 学生能运用所学知识,独立完成VHDL分频器代码编写;2. 学生能通过仿真软件对所设计的分频器进行功能验证,并分析其性能;3. 学生能运用所学技能解决实际工程问题,具备一定的实践操作能力。

情感态度价值观目标:1. 学生对VHDL语言及数字系统设计产生兴趣,提高学习积极性;2. 学生通过课程学习,培养团队协作精神,提高沟通与交流能力;3. 学生在课程实践中,养成严谨、认真的学习态度,树立正确的工程观念。

课程性质:本课程为实践性较强的专业课,要求学生具备一定的数字电路基础和VHDL语言知识。

学生特点:学生处于高年级阶段,具有一定的专业基础知识和实践能力,但个体差异较大。

教学要求:结合学生特点,注重理论与实践相结合,充分调动学生的学习积极性,提高学生的实践操作能力。

在教学过程中,注重培养学生的团队协作精神和工程观念。

通过本课程的学习,使学生能够掌握VHDL分频器的设计方法,为后续相关课程的学习和实际工程应用打下坚实基础。

二、教学内容1. VHDL语言基础回顾:复习VHDL的基本语法、数据类型、信号与变量、行为描述与结构描述等基本概念,确保学生具备扎实的VHDL编程基础。

教材章节:第二章 VHDL语言基础内容列举:基本语法、数据类型、信号与变量、行为描述与结构描述2. 分频器原理及分类:介绍分频器的工作原理、分类及性能指标,使学生了解不同类型分频器的优缺点及适用场景。

教材章节:第五章 分频器设计与实现内容列举:分频器原理、分类、性能指标3. VHDL分频器设计方法:讲解基于VHDL语言的分频器设计方法,包括计数器法、移位寄存器法等,并分析各种方法的优缺点。

基于VHDL的分频器设计[开题报告]

基于VHDL的分频器设计[开题报告]

开题报告电子信息工程基于VHDL的分频器设计三、课题研究的方法及措施由于本课题所设计的分频器基于EDA技术,应用VHDL硬件语言设计完成的,因此选择合适的硬件解决原理对分频器性能至关重要的,为了满足不同系统功能需求的分频,本课题将阐述不同原理,不同分频器,同种分频不同原理的设计方案。

占空比可控的整数分设计方案,原理为计数器为带预置数的计数器,其设计的特殊之处在于:可以根据需要,调整数据的位宽,而且计数的初始值是从l开始的,此处计数初始值的设定是设计的一个创新,这样做的目的是为了配合后面比较器的工作,计数器的输出数据作为比较器的输入,比较器的另一输入作为控制端,控制高低电平的比例,从而达到占空比可调的目的。

原理图如图1所示。

图1 占空比可控的原理图部分小数分频的基本原理是采用脉冲吞吐计数器和锁相环技术先设计两个不同分频比的整数分频器,然后通过控制单位时间内两种分频比出现的不同次数来获得所需要的小数分频值。

如设计一个分频系数为lO.1的分频器时。

可以将分频器设计成9次10分频,1次11分频这样总的分频值为如式1所示。

F=(9×10+lxl 1)/(9+1)=10.1 (式1)从这种实现方法的特点可以看出,由于分频器的分频值不断改变.因此分频后得到的信号抖动较大。

当分频系数为N-0.5(N为整数)时,可控制扣除脉冲的时间,以使输出成为一个稳定的脉冲频率。

而不是一次N分频.一次N-1分频。

图2给出了通用小数分频器的电路组成。

图2通用小数分频器的电路组成改进的小数分频设计方案,将两个整数分频器由一个整数分频器和一个半整数分频器代替,结果在如上分析的两个性能方面都有所提高。

利用参数化的设计思想和VHDL描述语言与原理图输入方法相结合的方式,设计并实现了一种抖动性能好且通用性强的小数分频器。

其原理图如下图3。

图3改进小数分频原理图四、课题研究进度计划毕业设计期限:自2011年12月10日至2012年3月10日。

基于VHDL的数字频率计设计

基于VHDL的数字频率计设计

XXXXXXX学院学生毕业设计(论文)报告系别:电子与电气工程学院专业:电子信息工程技术班号:学生姓名:学生学号:设计(论文)题目:基于VHDL的数字频率计设计指导教师:设计地点:XXXXXXX学院起迄日期:20XX.9.1~20XX.10.31毕业设计(论文)任务书专业电子信息工程技术班级姓名一、课题名称:基于VHDL的数字频率计设计二、主要技术指标:1. 频率范围为:1Hz~50MHz。

2. 结果用数码管十进制显示。

3. 输入信号电压幅度为50mV~5V。

三、工作内容和要求:1. 构建大体的设计方案,并了解其内容。

2. 构建出大体的顶层原理设计框图。

3. 对底层的每个电路模块的设计,并通过软件MAX+PLUS2完成程序的编写通过。

4. 对整个原理框图进行编译并通过。

5. 对整个仿真图编译通过。

四、主要参考文献:[1] 陈必群. EDA技术与项目训练[M] ,常州:常州信息职业技术学院,2009年.[2] 王凤英. 基于FPGA的数字频率计设计与仿真[J].科技资讯,,2008,15(8):1—10[3] 谭会生,张昌凡.EDA技术及应用.西安[M]:电子科技大学出版社,2001年[4] 张凯,林伟.VHDL实例剖析[M].北京:国防工业出版社,2004年[5] 刘玉良,李玲玉,邓勇全.吉林:用EDA方法设计数字系统的灵活性[D],2002年[6] 宋万杰等.CPLD技术及其应用.[M].西安:西安电子科技大学出版社,2000年.学生(签名)年月日指导教师(签名)年月日教研室主任(签名)年月日系主任(签名)年月日毕业设计(论文)开题报告基于VHDL的数字频率计设计目录摘要Abstract第1章前言 (1)第2章数字频率计的要求 (2)2.1 主要技术指标 (2)2.2 工作内容和要求 (2)第3章数字频率计的方案设计.............................. (3)3.1 基本原理 (3)3.1.1 频率计测量频率的设计原理 (3)3.1.2 频率计测量频率的原理图 (3)3.2 设计流程图 (3)第4章数字频率计各模块功能介绍 (4)4.1 频率控制模块的VHDL语言源程序 (4)4.1.1 频率控制模块的程序 (4)4.2 十进制加法计数器CNT10的VHDL语言源程序 (5)4.2.1 十进制计数器的程序 (5)4.2.2 十进制计数器的顶层设计 (6)4.3系统模块的VHDL语言源程序 (7)4.3.1系统模块的设计 (7)4.3.2 系统模块的程序 (7)4.4 锁存器LOCK的VHDL语言源程序 (10)4.4.1 锁存器LOCK的程序 (10)4.5 译码模块DECODER的VHDL语言源程序 (11)4.5.1 译码模块DECODER的程序 (11)4.6四选一选择器MUX41的VHDL语言源程序 (12)4.6.1 MUX41程序 (12)4.7 四进制计数器CNT4的VHDL语言源程序 (13)4.7.1 四进制计数器CNT4的程序 (13)4.8 250分频器的VHDL语言源程序 (14)4.8.1 250分频器的程序 (14)第5章数字频率计仿真图 (15)5.1 频率控制模块仿真波形图 (15)5.2 十进制计数器模块仿真波形图 (15)5.3 锁存模块仿真波形图 (15)5.4 译码模块波形仿真图 (16)5.5 四选一选择器MUX41的仿真图 (16)5.6 四进制计数器CNT4的仿真图 (16)5.7 250分频器的仿真图 (17)第6章频率计顶层原理图的输入 (18)第7章下载测试 (19)第8章结束语 (20)参考文献答谢辞数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。

VHDL语言各种分频器的设计

VHDL语言各种分频器的设计

硬件描述
使用VHDL,设计师可以描述电路 的结构、行为和功能,而无需关 心具体的物理实现细节。
设计层次
VHDL适用于不同层次的设计,从 门级到系统级,使得设计者可以 专注于设计逻辑而不是物理实现。
VHDL语言基本结构
实体
描述电路的输入和输出端口。
结构体
描述电路的内部逻辑和行为。

包含预定义的元件和函数。
end if;
end process;
8分频器设计
end Behavioral;
```
16分频器设计
16分频器:将输入频率降低到原来的 十六分之一。
VHDL代码实现
```vhdl
16分频器设计
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
03
if count = 3 then
4分频器设计
q <= '1';
count <= 0;
4分频器设计
01
else
02
q <= '0';
03
count <= count + 1;
4分频器设计
end if;
end if; end process;
4分频器设计
end Behavioral; ```
配置
指定实体和结构体的关联方式。
VHDL语言数据类型
标量类型
包括整数、实数、布尔等。
记录类型
组合不同数据类型的结构体。
向量类型
如位向量,用于表示位或字节。
数组类型

用VHDL语言设计频率计

用VHDL语言设计频率计

模块设计 分频器 由于设计的需要,我们进行三种分频的设 计:10分频、100分频、1000分频。这三 种分频对500Hz的信号进行分频,得到的是 50Hz、5Hz、0.5Hz的信号,将它们作为计 数闸门。
图4 分频器模块
闸门 闸门选择电路实际就是3选1电路,相对简 单,分频所得信号一起送入闸门,在控制 器的控制下,选出其中一路信号作为计数 闸门送入计数器。
图5 闸门模块
计数器 我们采用的是直接测频法,所以计数器就是在闸 门信号有效期间对被测信号进行计数。直接测频 法
图6 计数器模块
锁存器 锁存器用于将计数器的计数结果锁存,以 便于较稳定的显示测量结果。计数器完成 计数后,计数结果要立即锁存,在闸门低 电平期间,即计数器停止工作期间,计数 的结果要在锁存器中保持,直到新的计数 结果产生为止。
用VHDL语言设计数字频率计
付宝成 2006年6月
第一部分 设计要Байду номын сангаас及意义
一、设计的意义 频率测量是电子测量领域最基本的测量之一。随 着数字电子技术的发展,频率测量成为一项越来 越普遍的工作,测频原理及测频方法受到越来越 多的关注。 具有50多年发展历史的频率计是数字电路中的典 型仪器。它是实验室中常用的仪器之一,同时也 是计算机、通讯设备、音频视频等科研领域不可 缺少的测量仪器,是一种典型的数字化、自动化 的测量仪器,并越来越趋于小型化。
二、设计要求 测量方波信号的频率 测量的频率范围是1~100KHz 测量结果用十进制数显示 具有自动校验和测量两种功能 具有超量程报警功能,在超出测量范围 时,发出指示信号
第二部分 设计的内容
频率测量一般有测频法与测周期法两种基 本方法,其原理如下: 测频法:由标准时钟分频产生一门控信号, 在门控信号下对输入的被测信号周期进行 计数,也叫直接测频法。如图1所示。 设输入信号频率为Fx,门控信号有效电平 时间为T,在此有效电平时间内的计数值为 N,则输入信号的频率为:Fx=N/T。

实验六 基于VHDL语言的分频器设计与实现

实验六 基于VHDL语言的分频器设计与实现

实验六基于VHDL语言的分频器设计与实现报告一、实验目的1、进一步掌握VHDL语言的基本结构及设计的输入方法。

2、掌握VHDL基本逻辑电路的综合设计应用。

二、实验原理在数字电路系统中,分频电路应用得十分广泛。

例如,工程人员常常使用分频电路来得到数字通信中的帧头信号、选通信号以及中断信号等。

因此,分频电路在数字电路系统的设计中也应该作为重要的基本电路来掌握,从而给今后的一些设计带来方便。

三、实验内容1、设计并实现一个6分频的分频电路,要求其输出信号的占空比为50%。

请分析分频电路设计原理并编写VHDL语言程序,利用Max+PlusII开发软件对其进行编译和仿真。

6分频电路实现程序代码如下:2、在实际数字电路设计过程中,往往需要得到占空比不是1:1的分频时钟,方法是:首先描述一个计数器电路,然后根据计数器电路的并行输出信号来决定输出时钟的高低电平。

请设计、编写VHDL 语言程序实现分频后时钟信号的占空比为1:15的16分频电路,并利用Max+PlusII开发软件对其进行编译和仿真。

四、实验设计1.程序代码:图library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clk_div6 isport(clk:in std_logic;clk_out:out std_logic);end clk_div6;architecture rtl of clk_div6 issignal clk_temp:std_logic;beginprocess(clk)variable counter:integer range 0 to 15;constant md:integer:=2;beginif clk'event and clk='1'thenif counter=md thencounter:=0;clk_temp<=not clk_temp;elsecounter:=counter+1;end if;end if;end process;clk_out<=clk_temp;end rtl;2.仿真结果:五、实验结果分析本实验利用VHDL语言设计分频电路,目的在于进一步掌握VHDL语言的基本结构及设计的输入方法,掌握VHDL基本逻辑电路的综合设计应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

目录一、设计任务与要求 (3)二、总体框图 (3)三、选择器件 (4)四、功能 (5)1、数控分频器 (5)2、BCD译码器 (6)3、扫描器 (11)4、3-8译码器 (13)5、7段数码管显示译码器 (16)五、总体设计电路图 (19)1总体(顶层)电路原理图 (19)2仿真结果 (19)3管脚分配图 (20)4.硬件连接情况 (20)六.心得体会 (20)数控分频器设计一、设计任务与要求数控分频器的功能就是当输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,以实现所需的输出频率。

基本功能:1、实现8位分频器,依据输入的8位2进制数的不同,有不同的分频比。

如输入10010000,即对输入的时钟信号进行144分频,如输入01001000,即对输入的时钟信号进行72 分频。

2、输出的波形应为占空比位50%的方波。

3、有显示功能,显示当前的分频比,即,输入的二进制数的大小。

总体框图设计思路:数控分频器用计数值可并行预置的加法器设计完成,当在输入端给定不同输入数据时将对输入的时钟信号有不同的分频比。

把输入端输入的八位二进制数直接通过BCD译码器转换为十位BCD码表示的十进制数,通过扫描器对3个数码管进行选通扫描,最后7段数码管显示译码器对选中数码管的赋值进行译码,并驱动数码管显示该数据。

模块的功能:1、数控分频器:实现8位分频器,依据输入的8位2进制数的不同,有不同的分频比。

如输入10010000,即对输入的时钟信号进行144分频。

2、BCD译码器:把输入端的8位2进制数转换成10位BCD码表示的十进制数。

3、扫描器:when “000”=>daout<=dout(3 downto 0);when “001”=>daout<=dout(7 downto 4);when “010”=>daout<=dout(3 downto 2)<="00";daout(1 downto 0)<=dout(9 downto 8);when others=>null;4、3-8译码器:当sel=0时,q=11111110;选择个位数码管亮。

当sel=1时,q=11111101;选择十位数码管亮。

当sel=2时,q=11111011;选择百位数码管亮。

5、7段数码管显示译码器:把BCD码表示的十进制数转换成驱动数码管显示的段信号,使数码管显示数字。

三、选择器件1、装有QuartusII软件的计算机一台。

2、芯片:使用altera公司生产的Cyclone系列芯片,如EP1C12Q240C8芯片。

此次设计实验采用ALTERA公司的cyclone系列的FPGA芯片EP1C12,设计和仿真采用ALTERA公司的QUARTUS II软件,EP1C12各项参数参照上表。

Cyclone的性能特性(1)、新的可编程体系结构,实现低成本设计。

(2)、嵌入式存储器资源支持多种存储器应用和数字信号处理(DSP)实现(3)、专用外部存储器接口电路,支持与DDR FCRAM 和SDRAM 器件以及SDR SDRAM 存储器的连接。

(4)、支持串行总线和网络接口以及多种通信协议片内和片外系统时序管理使用嵌入式PLL(5)、支持单端I/O 标准和差分I/O 技术,LVDS 信号数据速率高达640Mbps 。

(6)、处理功耗支持Nios II 系列嵌入式处理器(7)、采用新的串行配置器件的低成本配置方案(8)、Quartus II 软件OpenCore 评估特性支持免费的IP 功能评估3、EDA 实验箱一个。

4、下载接口是数字芯片的下载接口(JTAG )主要用于FPGA 芯片的数据下载。

5、拨码开关。

6、7段数码管显示.将七段数码管的输入,即四位二进制数译十进制的形式显示到数码管上,数码管的每段是高电平,即输出位1时对应的灯就亮,输出位出0灯就灭,根据灯亮的段读出数字。

四、功能模块1、数控分频器dv f instclkd[7..0]f out图1数控分频器逻辑符号逻辑功能:用计数值可并行预置的加法计数器设计完成,当输入端输入的8位二进制数不同时,有不同的分频比。

VHDL 程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dvf isport ( clk : in std_logic;d : in std_logic_vector( 7 downto 0);fout :out std_logic );end;architecture one of dvf issignal full : std_logic;beginp_reg: process(clk)variable cnt8 : std_logic_vector(7 downto 0);beginif clk'event and clk='1' thenif cnt8= "11111111" thencnt8 := d;full <='1';else cnt8 :=cnt8 + 1;full <= '0';end if;end if;end process p_reg ;p_div: process(full)variable cnt2 : std_logic;beginif full'event and full ='1' thencnt2 :=not cnt2;if cnt2= '1' then fout<='1'; else fout<='0';end if;end if;end process p_div;end;仿真结果:图2 数控分频器仿真图仿真分析:波形仿真结果如上图所示,图中d[7..0]表示8位2进制输入端,fout为对时钟端的分频(大小与输入端2进制数大小相同)。

2、BCD译码器bin2bcddin[7..0]bcd[9..0]inst1图3 BCD译码器逻辑符号逻辑功能:把0-255这256个用8位2进制数表示的十进制数转换成用10位BCD 码表示的十进制数。

VHDL程序library ieee;use ieee.std_logic_1164.all;entity bin2bcd isport(din:in std_logic_vector(7 downto 0);bcd:out std_logic_vector(9 downto 0));end bin2bcd;architecture fun of bin2bcd isbeginprocess(din)begincase din iswhen "00000000"=>bcd<="0000000000";when "00000001"=>bcd<="0000000001";when "00000010"=>bcd<="0000000010";when "00000011"=>bcd<="0000000011";when "00000100"=>bcd<="0000000100";when "00000101"=>bcd<="0000000101";when "00000110"=>bcd<="0000000110";when "00000111"=>bcd<="0000000111";when "00001000"=>bcd<="0000001000";when "00001001"=>bcd<="0000001001";when "00001010"=>bcd<="0000010000";when "00001011"=>bcd<="0000010001";when "00001100"=>bcd<="0000010010";when "00001101"=>bcd<="0000010011";when "00001110"=>bcd<="0000010100";when "00001111"=>bcd<="0000010101";when "00010000"=>bcd<="0000010110";when "00010001"=>bcd<="0000010111";when "00010010"=>bcd<="0000011000";when "00010011"=>bcd<="0000011001";when "00010100"=>bcd<="0000100000";when "00010101"=>bcd<="0000100001";when "00010110"=>bcd<="0000100010";when "00010111"=>bcd<="0000100011";when "00011000"=>bcd<="0000100100";when "00011001"=>bcd<="0000100101";when "00011010"=>bcd<="0000100110";when "00011100"=>bcd<="0000101000"; when "00011101"=>bcd<="0000101001"; when "00011110"=>bcd<="0000110000"; when "00011111"=>bcd<="0000110001"; when "00100000"=>bcd<="0000110010"; when "00100001"=>bcd<="0000110011"; when "00100010"=>bcd<="0000110100"; when "00100011"=>bcd<="0000110101"; when "00100100"=>bcd<="0000110110"; when "00100101"=>bcd<="0000110111"; when "00100110"=>bcd<="0000111000"; when "00100111"=>bcd<="0000111001"; when "00101000"=>bcd<="0001000000"; when "00101001"=>bcd<="0001000001"; when "00101010"=>bcd<="0001000010"; when "00101011"=>bcd<="0001000011"; when "00101100"=>bcd<="0001000100"; when "00101101"=>bcd<="0001000101"; when "00101110"=>bcd<="0001000110"; when "00101111"=>bcd<="0001000111"; when "00110000"=>bcd<="0001001000"; when "00110001"=>bcd<="0001001001"; when "00110010"=>bcd<="0001010000"; when "00110011"=>bcd<="0001010001"; when "00110100"=>bcd<="0001010010"; when "00110101"=>bcd<="0001010011"; when "00110110"=>bcd<="0001010100"; when "00110111"=>bcd<="0001010101"; when "00111000"=>bcd<="0001010110"; when "00111001"=>bcd<="0001010111"; when "00111010"=>bcd<="0001011000"; when "00111011"=>bcd<="0001011001"; when "00111100"=>bcd<="0001100000"; when "00111101"=>bcd<="0001100001"; when "00111110"=>bcd<="0001100010"; when "00111111"=>bcd<="0001100011"; when "01000000"=>bcd<="0001100100"; when "01000001"=>bcd<="0001100101"; when "01000010"=>bcd<="0001100110"; when "01000011"=>bcd<="0001100111"; when "01000100"=>bcd<="0001101000"; when "01000101"=>bcd<="0001101001"; when "01000110"=>bcd<="0001110000";when "01001000"=>bcd<="0001110010"; when "01001001"=>bcd<="0001110011"; when "01001010"=>bcd<="0001110100"; when "01001011"=>bcd<="0001110101"; when "01001100"=>bcd<="0001110110"; when "01001101"=>bcd<="0001110111"; when "01001110"=>bcd<="0001111000"; when "01001111"=>bcd<="0001111001"; when "01010000"=>bcd<="0010000000"; when "01010001"=>bcd<="0010000001"; when "01010010"=>bcd<="0010000010"; when "01010011"=>bcd<="0010000011"; when "01010100"=>bcd<="0010000100"; when "01010101"=>bcd<="0010000101"; when "01010110"=>bcd<="0010000110"; when "01010111"=>bcd<="0010000111"; when "01011000"=>bcd<="0010001000"; when "01011001"=>bcd<="0010001001"; when "01011010"=>bcd<="0010010000"; when "01011011"=>bcd<="0010010001"; when "01011100"=>bcd<="0010010010"; when "01011101"=>bcd<="0010010011"; when "01011110"=>bcd<="0010010100"; when "01011111"=>bcd<="0010010101"; when "01100000"=>bcd<="0010010110"; when "01100001"=>bcd<="0010010111"; when "01100010"=>bcd<="0010011000"; when "01100011"=>bcd<="0010011001"; when "01100100"=>bcd<="010*******"; when "01100101"=>bcd<="010*******"; when "01100110"=>bcd<="010*******"; when "01100111"=>bcd<="010*******"; when "01101000"=>bcd<="010*******"; when "01101001"=>bcd<="010*******"; when "01101010"=>bcd<="010*******"; when "01101011"=>bcd<="010*******"; when "01101100"=>bcd<="010*******"; when "01101101"=>bcd<="010*******"; when "01101110"=>bcd<="010*******"; when "01101111"=>bcd<="010*******"; when "01110000"=>bcd<="010*******"; when "01110001"=>bcd<="010*******"; when "01110010"=>bcd<="010*******";when "01110100"=>bcd<="010*******"; when "01110101"=>bcd<="010*******"; when "01110110"=>bcd<="010*******"; when "01110111"=>bcd<="010*******"; when "01111000"=>bcd<="010*******"; when "01111001"=>bcd<="010*******"; when "01111010"=>bcd<="010*******"; when "01111011"=>bcd<="010*******"; when "01111100"=>bcd<="010*******"; when "01111101"=>bcd<="010*******"; when "01111110"=>bcd<="010*******"; when "01111111"=>bcd<="010*******"; when "10000000"=>bcd<="010*******"; when "10000001"=>bcd<="010*******"; when "10000010"=>bcd<="010*******"; when "10000011"=>bcd<="010*******"; when "10000100"=>bcd<="010*******"; when "10000101"=>bcd<="010*******"; when "10000110"=>bcd<="010*******"; when "10000111"=>bcd<="010*******"; when "10001000"=>bcd<="010*******"; when "10001001"=>bcd<="010*******"; when "10001010"=>bcd<="010*******"; when "10001011"=>bcd<="010*******"; when "10001100"=>bcd<="010*******"; when "10001101"=>bcd<="010*******"; when "10001110"=>bcd<="010*******"; when "10001111"=>bcd<="010*******"; when "10010000"=>bcd<="010*******"; when "10010001"=>bcd<="010*******"; when "10010010"=>bcd<="010*******"; when "10010011"=>bcd<="010*******"; when "10010100"=>bcd<="010*******"; when "10010101"=>bcd<="010*******"; when "10010110"=>bcd<="010*******"; when "10010111"=>bcd<="010*******"; when "10011000"=>bcd<="010*******"; when "10011001"=>bcd<="010*******"; when "10011010"=>bcd<="010*******"; when "10011011"=>bcd<="010*******"; when "10011100"=>bcd<="010*******"; when "10011101"=>bcd<="010*******"; when "10011110"=>bcd<="010*******";when "10100000"=>bcd<="010*******"; when "10100001"=>bcd<="010*******"; when "10100010"=>bcd<="010*******"; when "10100011"=>bcd<="010*******"; when "10100100"=>bcd<="010*******"; when "10100101"=>bcd<="010*******"; when "10100110"=>bcd<="010*******"; when "10100111"=>bcd<="010*******"; when "10101000"=>bcd<="010*******"; when "10101001"=>bcd<="010*******"; when "10101010"=>bcd<="010*******"; when "10101011"=>bcd<="010*******"; when "10101100"=>bcd<="010*******"; when "10101101"=>bcd<="010*******"; when "10101110"=>bcd<="010*******"; when "10101111"=>bcd<="010*******"; when "10110000"=>bcd<="010*******"; when "10110001"=>bcd<="010*******"; when "10110010"=>bcd<="010*******"; when "10110011"=>bcd<="010*******"; when "10110100"=>bcd<="0110000000"; when "10110101"=>bcd<="0110000001"; when "10110110"=>bcd<="0110000010"; when "10110111"=>bcd<="0110000011"; when "10111000"=>bcd<="0110000100"; when "10111001"=>bcd<="0110000101"; when "10111010"=>bcd<="0110000110"; when "10111011"=>bcd<="0110000111"; when "10111100"=>bcd<="0110001000"; when "10111101"=>bcd<="0110001001"; when "10111110"=>bcd<="0110010000"; when "10111111"=>bcd<="0110010001"; when "11000000"=>bcd<="0110010010"; when "11000001"=>bcd<="0110010011"; when "11000010"=>bcd<="0110010100"; when "11000011"=>bcd<="0110010101"; when "11000100"=>bcd<="0110010110"; when "11000101"=>bcd<="0110010111"; when "11000110"=>bcd<="0110011000"; when "11000111"=>bcd<="0110011001"; when "11001000"=>bcd<="0110000100"; when "11001001"=>bcd<="0110000101"; when "11001010"=>bcd<="0110000110";when "11001100"=>bcd<="0110001000"; when "11001101"=>bcd<="0110001001"; when "11001110"=>bcd<="0110010000"; when "11001111"=>bcd<="0110010001"; when "11010000"=>bcd<="0110010010"; when "11010001"=>bcd<="0110010011"; when "11010010"=>bcd<="0110010100"; when "11010011"=>bcd<="0110010101"; when "11010100"=>bcd<="0110010110"; when "11010101"=>bcd<="0110010111"; when "11010110"=>bcd<="0110011000"; when "11010111"=>bcd<="0110011001"; when "11011000"=>bcd<="1000000000"; when "11011001"=>bcd<="1000000001"; when "11011010"=>bcd<="1000000010"; when "11011011"=>bcd<="1000000011"; when "11011100"=>bcd<="1000000100"; when "11011101"=>bcd<="1000000101"; when "11011110"=>bcd<="1000000110"; when "11011111"=>bcd<="1000000111"; when "11100000"=>bcd<="1000001000"; when "11100001"=>bcd<="1000001001"; when "11100010"=>bcd<="1000010000"; when "11100011"=>bcd<="1000010001"; when "11100100"=>bcd<="1000010010"; when "11100101"=>bcd<="1000010011"; when "11100110"=>bcd<="1000010100"; when "11100111"=>bcd<="1000010101"; when "11101000"=>bcd<="1000010110"; when "11101001"=>bcd<="1000010111"; when "11101010"=>bcd<="1000011000"; when "11101011"=>bcd<="1000011001"; when "11101100"=>bcd<="1000100000"; when "11101101"=>bcd<="1000100001"; when "11101110"=>bcd<="1000100010"; when "11101111"=>bcd<="1000100011"; when "11110000"=>bcd<="1000100100"; when "11110001"=>bcd<="1000100101"; when "11110010"=>bcd<="1000100110"; when "11110011"=>bcd<="1000100111"; when "11110100"=>bcd<="1000101000"; when "11110101"=>bcd<="1000101001"; when "11110110"=>bcd<="1000110000";when "11111000"=>bcd<="1001001000";when "11111001"=>bcd<="1001001001";when "11111010"=>bcd<="1001010000";when "11111011"=>bcd<="1001010001";when "11111100"=>bcd<="1001010010";when "11111101"=>bcd<="1001010011";when "11111110"=>bcd<="1001010100";when "11111111"=>bcd<="1001010101";when others=>bcd<=null;end case;end process;end architecture fun;仿真结果图4 BCD译码器仿真图仿真分析:仿真波形结果如上图所示din[7..0]为输入的8位2进制数,经译码器译码后转换为相应的BCD码。

相关文档
最新文档