EDA 4-7线译码器 8-3线编码器 电子时钟
武汉理工大学华夏学院EDA复习题答案
1、IEEE标准的硬件描述语言是Verilog HDL和VHDL共同点是:能够形式化地抽象表示电路的行为和结构;支持逻辑设计中层次与范围的描述:可借用高级语言的精巧结构来简化电路行为的描述:具有电路仿真与验证机制以保证设计的正确性;支持电路描述由高层到低层的综合转换;硬件描述与实现工艺无关;便于文档管理;易于理解和设计重用。
不同点:Verilog HDL是一种非常容易掌握的硬件描述语言,而VHDL掌握起来就比较困难。
2、把功能经过验证的、可综合的、实现后电路结构总门数在5000门以上的Verilog HDL模型称之为“软核”。
把在某一种现场可编程门阵列(FPGA)器件上实现的、经验证是正确的、总门数在5000门以上电路结构编码文件称为“固核”。
把在某一种专用集成电路工艺的(ASIC)器件上实现的、经验证是正确的、总门数在5000门以上电路结构版图掩膜称为“硬核”。
3、什么叫综合?通过综合产生的是什么?通过综合工具把行为级描述的模块通过逻辑网表自动转化为门级形式的模块叫综合。
综合由EDA工具来完成。
产生的是由与门,或门和非门组成的加法器,比较器等组合逻辑。
产生的模块很容易与某种工艺的基本元件逐一对应起来,再通过布局布线工具自动地转变为某种工具工艺的电路布线结构。
4、仿真可以在几层面上进行?每个层面的仿真有什么意义?分别为:前仿真,逻辑网表仿真,门级仿真和布线后仿真。
前仿真,逻辑网表仿真,门级仿真:可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改。
布线后仿真:分析设计的电路模块的运行是否正常。
5、模块由描述接口和描述逻辑功能两部分组成。
6、端口分为三种:输入口、输出口、输入/输出口。
7、reg型和wire型变量的差别是什么?reg型变量是寄存器型变量,wire型变量是连线型变量。
两者根本性的差别在于reg型变过量有个寄存器来存放变量,这个值只有变量发生改变时才会改变否则保证原来的值不变,wire型变量的值不是确定的值。
EDA设计 数字钟
摘要利用MAX+PLUSⅡ软件,设计一个能进行时、分、秒计时的24制多功能数字钟,使其具有定时与闹钟功能,且能在设定的时间发出闹铃音,能非常方便地对时、分、秒进行手动调节以校准时间,每逢整点,产生报时音效,并在实验板上成功下载,验证后满足要求。
关键词:EDA ; MAX+PLUS2 ;数字钟;0 引言随着科学技术的发展,现代电子设计技术已进入一个全新的阶段,传统的电子设计方法、工具和器件在更大的程度上被EDA所取代。
在EDA技术中,最为瞩目的是以现代电子技术为特征的逻辑设计仿真测试技术,该技术的出现,使电子系统设计发生了质的变化,设计速度快、体积小、重量轻、功耗小的集成电路已成为趋势。
本文利用EDA 技术,选用ALTERA公司的CPLD器件EPF10K10LC84-4和软件MAX+PLUS2,设计了一个多功能数字钟,提高了系统的整体性能和可靠性,并通过编译、仿真、下载,经验证后已满足要求。
1 多功能数字钟设计任务1.1 数字钟设计要求(1)、设计一个能显示1/10秒、秒、分、时的12小时数字钟。
(2)、熟练掌握各种计数器的使用。
(3)、能用计数器构成十进制、六十进制、十二进制等所需进制的计数器。
(4)、能用低位的进位输出构成高位的计数脉冲。
1.2 设计思路此设计可分为主控电路、计数器模块和扫描显示三大模块。
1.2.1 主控电路模块主控电路状态用表格显示,如下表所列:模式选择秒、时、分、计数器脉冲输出状态备注Reset Reset1 A B Turn LD-h LD-m LD-alert0 X X X X X 0 0 0 系统复位1 X 0 0 X CLK 0 0 0 系统计时1 X 0 1 0 Change=分计数器加1 0 1 0手动1 X 0 1 1 Change=时计数器加1 1 0 0校时1 1 1 0 0 Change=分计数器加1 0 1 1 设置闹钟1 1 1 0 1 Change=时计数器加11 0 11 0 X X X X 0 0 0 关闭闹钟1.2.2 计数器模块计数器模块中,分钟和秒用带进位位的60进制功能模块,小时用不带进位位的24进制功能模块(如果考虑到日期的问题,在24进制模块加进位输出即可实现)。
Verilog HDL 之 8-3编码器
Verilog HDL 之8-3编码器原理:在数字系统中,常常需要将某一信息(输入)变换为某一特定的代码(输出)。
把二进制码按一定的规律排列,例如8421码、格雷码等,使每组代码具有一特定的含义(代表某个数字或是控制信号)称为编码。
具有编码功能的逻辑电路称为编码器。
编码器有若干个输入,在某一时刻只有一个输入被转换为二进制码。
例如8线-3线编码器和10线-4线编码器分别有8输入、3位输出和10位输入、4位输出。
下面是8-3编码器的真值表。
实验环境:硬件:AR2000核心板、SOPC-MBoard板、PC 机、ByteBlaster II 下载电缆软件:ModelSim 、Altera Quartus II 7.2 集成开发环境。
实验步骤:1.打开Quartus II 7.2软件,选择File | New Project Wizard新建一个工程,在对话框中第一行选择工程路径,并为该工程新建一个文件夹。
本例中第二行输入工程名bm8_3;第三行是工程顶层设计文件名,该顶层设计文件名一定要与设计文件中模块名module一致,可以与工程名不同,但一般都和工程名一致。
如图1.1所示。
图1.1 在Quartus II中新建工程2.单击“Next”,此对话框是向工程中添加设计文件的。
现在还没有写设计文件,所以没有文件可以添加;直接单击“Next”,进入器件选择对话框。
在Family下拉菜单中选择Cyclone II 系列。
然后在Filters下的Package下拉菜单中选择封装形式FBGA,Pin count下拉菜单中选择管脚数672,Speed grade下拉菜单中选择速度级别8;然后在Available devices中选择EP2C35F672C8器件。
如图1.2所示。
图1.2 选择FPGA器件3.单击Finish,建立好工程。
向工程中添加设计文件,选择File | New ,在New对话框中选择Device Design Files下的Verilog HDL File,单击OK,完成新建设计文件。
eda程序设计
process(clk)
begin
if clk'event and clk='1' then
q1<=q1+1;
end if;
q<=q1;
end process;
end behave;
11、4为二进制数比较器
library ieee;
use ieee.std_logic_1164.all;
elsif a(2)='1' then y<="010";
elsif a(1)='1' then y<="001";
elsif a(0)='1' then y<="000";
end if;
end process;
end behave;
3、多路分配器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
architecture behave of bijiaoqi is
begin
output<=(a>=b);
end behave;
12、整数加法运算
library ieee;
use ieee.std_logic_1164.all;
entity zhengshujiafa is
ENTITY dmux1to8 IS
PORT(data:IN STD_LOGIC;
enable: IN STD_LOGIC;
s: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
EDA考试
2输入或非门的VHDL程序文件名:gate_nor.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY gate_nor ISPORT (A,B:IN STD_LOGIC;Y:OUT STD_LOGIC);END gate_nor;ARCHITECTURE a OF gate_nor ISBEGINY<=A NOR B; --或非门输出,或者可写成Y<=NOT(A OR B);END a;1、3/8译码器VHDL设计1)、设计实现及VHDL程序对于3/8译码器可以用并行语句中的选择信号赋值语句(WITH_SELECT语句)、条件信号赋值语句(WHEN_ELSE语句)来描述,也可以用顺序语句中的IF语句或者CASE语句来描述。
下面给出的例程是采用选择信号赋值语句来描述3/8译码器。
文件名:decoder.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder ISPORT(A:in STD_LOGIC_VECTOR(2 DOWNTO 0);Y:OUT STD_LOGIC_VECTOR (7 DOWNTO 0));END decoder;ARCHITECTURE rtl OF decoder ISBEGINWITH A SELECTY<="11111110" WHEN "000","11111101" WHEN "001","11111011" WHEN "010","11110111" WHEN "011","11101111" WHEN "100","11011111" WHEN "101","10111111" WHEN "110","01111111" WHEN "111","11111111" WHEN OTHERS;END rtl;2、4位BCD-七段显示码译码器VHDL设计4位BCD-七段显示译码器可将BCD-七段显示码转换成数字显示码,用于驱动LED数码管,可分为共阴与共阳两种,下面以设计共阴4位BCD-七段显示译码器为例来说明其设计方法。
eda实验
实验三利用gal16v8实现4线-7段译码器的功能一、实验目的1.了解GAL16V8的结构及其应用;2.掌握GAL器件的设计原则和一般格式;3.掌握通用逻辑GAL的编程、下载、验证功能的全部过程。
二、实验内容用GAL16V8芯片实现4线-7段译码器的功能。
GAL16V8的管脚如图1所示:其中管脚10和20分别接到电源的负极和正极;图1GAL16V8的管脚本实验要驱动的数码管是共阳极数码管,则4线-7段译码器的真值表如图2所示:图24线-7段译码器的真值表根据真值表编写逻辑表达式:/Y7=/A3*/A2*/A1*/A0+/A3*/A2*/A1*A0+/A3*A2*A1*A0/Y6=/A3*/A2*/A1*A0+/A3*/A2*A1*/A0+/A3*/A2*A1*A0+/A3*A2*A1*A0/Y5=A3*A2*/A1*/A0+/A3*/A2*/A1*A0+/A3*A2*A1*A0+/A3*/A2*A1*A0+/A3*A2*/A1*A0 +A3*/A2*/A1*A0/Y4=/A3*A2*/A1*/A0+/A3*/A2*/A1*A0+/A3*A2*A1*A0/Y3=/A3*/A2*A1*/A0/Y2=/A3*A2*/A1*A0+/A3*A2*A1*/A0/Y1=/A3*A2*/A1*/A0+/A3*/A2*/A1*A0其中Y1-Y7是输出,分别对应真值表中a,b,c,e,f,g,A0-A3是输入,分别对应真值表中的A,B,C,D;三、实验步骤1)编写PLD格式的程序源文件利用记事本编辑源文件如图3所示,格式保存为“PLD”。
图3PLD格式的源文件2)用FM软件对源文件进行编译生成JED格式的目标文件打开FM软件,屏幕上出现键入输入文件名的提示如图4所示。
键入已准备好的PLD后缀的源文件的文件名,并按回车键,屏幕上出现5项选项,并提示键入相应的选择项(数字键1~5)如图5所示。
图4输入文件名提示图5选项界面其中:第1项,建立列表文件操作,将产生后缀为LST的列表文件。
《EDA技术实用教程》习题解答
习题 5-6 根据图 5-23,写出顶层文件 MX3256.VHD 的 VHDL 设计文件。
第 1 章 概述
9
图 5-21 习题 5-4 图
解: VHDL 设计文件内容如下:
library ieee; use ieee.std_logic_1164.all;
entity exen is
port ( cl
: in std_logic;
clk0 : in std_logic;
out1 );
: out std_logic
out1 <= not tmp; end hdlarch; ⊕习题 5-5 给出 1 位全减器的 VHDL 描述。要求: (1) 首先设计 1 位半减器,然后用例化语句将它们连接起来,图 5-22 中 h_suber 是半减器,diffr 是输出差, s_out 是借位输出,sub_in 是借位输入。
解:
图 5-19 4 选 1 多路选择器
图 5-20 双 2 选 1 多路选择器
architecture hdlarch of MUXK is
signal tmp : std_logic;
begin
process(s0,a2,a3) begin
if s0 = '0' then
tmp <= a2;
else
解:用同步计数器来实现。(事实上要求设计的是一个袼雷码计数器)
考虑不同状态时,对应的 DFF 输入端的值:
eda
实验项目一一、实验目的1、通过3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
3、初步了解可编程器件设计的全过程。
二、实验内容使用MAXPLUSII软件,设计一个3-8译码器,得出正确的仿真验证结果。
三、实验原理、方法和手段3-8译码器三输入,八输出。
当输入信号按二进制方式的表示值为N时,输出端标号为N的输出端输出高电平表示有信号产生,而其它则为低电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为高电平情况下,能表示所有的输入组合。
3-8译码器采用原理图输入的方式将三个输入端与其的非以八种与的方式进行连接进而得出输出。
四、设计输入五、仿真输出六、实验总结(被加数)Ai(被加数)Bi(半加和)Hi(本位进位)Ci实验二 半加器设计实验类型:综合 一、实验目的设计并实现一个一位半加器。
二、实验内容使用MAXPLUSII 软件,设计一个一位半加器,得出正确的仿真验证结果。
三、实验原理、方法和手段半加器电路是指对两个输入数据位相加,输出一个结果位和进位,没有进位输入的加法器电路,是实现两个一位二进制数的加法运算电路。
计算机中数的操作都是以二进制进位的,最基本的运算就是加法运算。
按照进位是否加入,加法器分为半加器和全加器电路两种。
计算机中的异或指令的功能就是求两个操作数的和。
一位半加器有两个输入、输出。
一位半加器示意图Bi Ai Bi Ai Hi ∙+∙= Bi Ai Ci ∙=采用原理图输入的方式将两个输入端同或输出是,与输出co四、设计输入五、仿真输出六、实验总结实验项目 五一、实验目的设计并实现一个带进位的通用加法器设计。
二、实验内容使用MAXPLUSII 软件设计一个带进位的通用加法器,得出正确的仿真验证结果。
三、实验原理、方法和手段加法器,是产生数的和的装置。
常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。
实验二 8线-3线编码器设计
实验名称 8线-3线编码器设计指导老师尚丽娜成绩专业电科班级 1102 姓名汪磊学号31102333一、实验目的1、学习QuartusII软件,学习使用硬件描述语言设计电路。
2、学习DE1平台基本构成,能够使用DE1平台进行简单设计。
二、实验要求使用QuartusII文本输入法设计8线-3线编码器。
使用QuartusII软件进行文本输入,并对设计电路进行仿真,并下载到硬件平台,自行定义硬件平台使用端口。
三、实验设备PC机、DE1硬件平台四、实验原理根据8线—3线编码器的真值表原理进行实验,下表为8线—3线编码器的真值表五、实验过程library ieee;use ieee.std_logic_1164.all;entity bm8_3 isport(a:in std_logic_vector(7 downto 0);b:out std_logic_vector(2 downto 0));end bm8_3;architecture zhang of bm8_3 isbeginprocess(a)begincase a iswhen"00000001"=>b<="000";when"00000010"=>b<="001";when"00000100"=>b<="010";when"00001000"=>b<="011";when"00010000"=>b<="100";when"00100000"=>b<="101";when"01000000"=>b<="110";when others=>b<="111";end case;end process;end zhang;六、实验结果该程序还存在一些不足,当出现10000000是和非正常输入的时候是一样的输出,所以我们进行了一些修改,修改程序与结果如下:library ieee;use ieee.std_logic_1164.all;entity e isport(a:in std_logic_vector(7 downto 0);b:out std_logic_vector(3 downto 0));end e;architecture zhang of e isbeginprocess(a)begincase a iswhen"00000001"=>b<="0000";when"00000010"=>b<="0001";when"00000100"=>b<="0010";when"00001000"=>b<="0011";when"00010000"=>b<="0100";when"00100000"=>b<="0101";when"01000000"=>b<="0110";when"10000000"=>b<="0111";when others=>b<="1111";end case;end process;end zhang;思考题一:思考题二:entity e isport(a:in bit_vector(7 downto 0);b:out bit_vector(3 downto 0)); end e;architecture zhang of e isbeginprocess(a)begincase a iswhen"00000001"=>b<="0000";when"00000010"=>b<="0001";when"00000100"=>b<="0010";when"00001000"=>b<="0011";when"00010000"=>b<="0100";when"00100000"=>b<="0101";when"01000000"=>b<="0110";when"10000000"=>b<="0111";when others=>b<="1111";end case;end process;end zhang;七、心得体会对操作更加熟练,加深对其的认识。
EDA8位计数显示译码电路的设计
EDA8位计数显示译码电路的设计八位计数显示译码电路是一种常见的数字电路设计,用于将二进制计数器的输出转换为对应的字符或数字显示。
本次EDA报告将介绍八位计数显示译码电路的设计原理、功能和设计过程。
1.设计原理:八位计数显示译码电路的主要原理是通过接收二进制计数器的输出信号,通过对应的译码器将其转换为七段数码管的控制信号,从而实现显示。
2.设计功能:八位计数显示译码电路的功能主要包括:-显示功能:将二进制计数器的输出显示在七段数码管上,实现数字的可视化显示。
-增量计数:根据输入的时钟信号进行增量计数,实现从0到255的循环计数。
-译码功能:将二进制计数器的输出信号转换为七段数码管的控制信号,控制数码管上对应的数码显示。
3.设计过程:八位计数显示译码电路的设计过程主要包括以下几个步骤:3.1确定输入与输出首先,我们需要确定设计的输入和输出。
输入主要包括时钟信号和复位信号,用于控制计数和复位操作;输出为控制七段数码管显示的控制信号。
3.2确定译码方式根据设计需求,我们可以选择使用常见的译码方式,如BCD译码器、十六进制译码器等。
根据实际情况选择适合的译码方式,使得设计简单有效。
3.3确定译码逻辑在确定了译码方式后,需要根据输入信号和输出信号的关系,确定译码逻辑。
根据二进制计数器的输出信号,将其映射到对应的数字或字符,为七段数码管提供正确的控制信号。
3.4组合逻辑设计根据译码逻辑,设计出控制信号的生成电路。
可以使用门电路、与非门电路或多路选择器等组合逻辑电路实现。
3.5简化逻辑电路对于逻辑电路的设计,可以使用布尔代数、卡诺图等方法进行简化和优化,使电路结构更为简洁。
3.6电路仿真与验证完成电路设计后,可以使用电路仿真工具对电路进行验证和测试,确保电路功能正确。
4.设计注意事项:在设计八位计数显示译码电路时,需要注意以下几点:4.1七段数码管的驱动电流和电压根据所选用的七段数码管的规格,需要确保驱动电流和电压符合规格要求。
《EDA》实验指导书--精讲
辽东学院自编教材《可编程逻辑器件原理及应用实验》指导书李海成编(计算机科学与技术、电子信息工程专业用)姓名:学号:班级:信息技术学院2013年6月目录目录 (1)实验一MAX+PLUS-II设计三八译码器......... 错误!未定义书签。
实验二半加器 . (2)实验三带进位输入的8位加法器 (4)实验四数据比较器 (6)实验五编码器 (9)实验六组合逻辑电路的设计 (12)实验七计数器 (14)实验八触发器功能的模拟实现 (17)(被加数)Ai(被加数)Bi(半加和)Hi(本位进位)Ci实验二 半加器实验类型: 验证性实验课时: 2指导教师: 李海成 时 间:201 年 月 日 课 次:第 节教学周次:第 周实验分室: 实验台号: 实 验 员:一、 实验目的1.设计并实验一个一位半加器2.掌握CPLD/FPGA 组合逻辑设计基本方法。
二、 实验原理计算机中数的操作都是以二进制进位的,最基本的运算就是加法运算。
按照进位是否加入,加法器分为半加器和全加器电路两种。
计算机中的异或指令的功能就是求两个操作数各位的半加和。
一位半加器有两个输入、输出,如图2-1。
图2-1 一位半加器示意图表2-1一个半加大路的真值表如表2-1所示,根据真值表可得到半加器的函数表达式:Bi Ai Bi Ai Hi ∙+∙= Bi Ai Ci ∙=三、 实验连线半加器的两个输入所对应的管脚同两位拨码开关相连,两个输入管脚名为a 、b ;两个输出所对应的管脚同两位发光二极管相连,两个输出管脚名为 c0和s,其中c0表示进位, s 表示相加结果。
四、 实验记录五、实验注意事项1.提前编辑实验程序。
2.根据教师要求正确操作,并检验逻辑的正确性六、思考题1.EDA半加器实现与数字电路设计方法的根本区别。
2.简述EDA设计半加器的不同方法,并比较其优缺点。
3.心得体会及其他。
实验三 带进位输入的8位加法器实验类型: 验证性实验课时: 2 指导教师:时 间:200 年 月 日 课 次:第 节教学周次:第 周实验分室: 实验台号: 实 验 员:一、 实验目的1. 设计并实现一个8位全加器2. 掌握EDA 中模块调用方法 二、 实验原理利用实验二构建的半加器构建一位的全加器,然后设计一个8 位的全加器,其框图如图4-1所示。
EDA实验-- 译码器与编码器的设计与仿真
实验三译码器与编码器的设计与仿真一、实验目的:熟悉Quartus软件的基本操作,掌握用Quartus软件验证VHDL语言。
熟悉译码器与编码器所实现功能及其应用,通过实验堆译码器与编码器有更深刻理解。
一、实验内容:1.参照芯片74LS138的电路结构,用逻辑图和VHDL语言设计3-8译码器;2.参照芯片74LS148的电路结构,用逻辑图和VHDL语言设计8-3优先编码器。
三、实验原理:电路功能介绍1.74148:8-3优先编码器(8 to 3 Priority Encoder)用途:将各种输入信号转换成一组二进制代码,使得计算机可以识别这一信号的作用。
键盘里就有大家天天打交道的编码器,当你敲击按键时,被敲击的按键被键盘里的编码器编码成计算机能够识别的ASCII码。
译码器与编码器的功能正好相反。
逻辑框图逻辑功能表逻辑表达式和逻辑图:由你来完成。
2.74138:3-8译码器(3 to 8 Demultiplexer),也叫3-8解码器用途:用一组二进制代码来产生各种独立的输出信号,这种输出信号可以用来执行不同的工作。
显示器中的像素点受到译码器的输出控制。
逻辑框图:用逻辑符号(Symbol)来解释该电路输入与输出信号之间的逻辑关系,既省事又直观。
如下图所示。
逻辑功能表:用真值表来定量描述该电路的逻辑功能。
这个表是设计3-8译码器的关键;74138的逻辑功能表如下:注:使能端G1是高电平有效;使能端G2是低电平有效,G2 = G2A AND G2B 。
代码输入端解码信号输出端低电平有效使能输入端四、实验步骤:1、译码器:(1)在Quartus软件中输入以下程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity lbz3 isport (A : in std_logic_vector(2 downto 0); Y : out std_logic_vector(7 downto 0)); end lbz3;architecture art of lbz3 isbeginY<="10000000" when(A="111")else "01000000" when(A="110")else"00100000" when(A="101")else"00010000" when(A="100")else"00001000" when(A="011")else"00000100" when(A="010")else"00000010" when(A="001")else"00000001";end art;在Quartus中对程序进行编译如下所示:从编译界面可以看到程序运行无错误;通过“RTL viewer”按钮生成综合电路图如下:(2)根据综合电路图生成如下功能仿真波形:如仿真图可以看出当A=“001”时Y=“00000010”,同理当A取其他值时Y也输出相应的值,满足译码器逻辑功能表。
EDA技术实用教程--VHDL版本(第五版)潘松课后习题答案
《EDA技术实用教程(第五版)》习题1 习题1-1EDA技术与ASIC设计和FPGA开发有什么关系?FPGA在ASIC设计中有什么用途?P3~4EDA技术与ASIC设计和FPGA开发有什么关系?答:利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现;FPGA和CPLD是实现这一途径的主流器件。
FPGA和CPLD的应用是EDA技术有机融合软硬件电子设计技术、SoC(片上系统)和ASIC设计,以及对自动设计与自动实现最典型的诠释。
FPGA在ASIC设计中有什么用途?答:FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC。
FPGA实现ASIC设计的现场可编程器件。
1-2 与软件描述语言相比,VHDL有什么特点? P4~6答:编译器将软件程序翻译成基于某种特定CPU的机器代码,这种代码仅限于这种CPU 而不能移植,并且机器代码不代表硬件结构,更不能改变CPU的硬件结构,只能被动地为其特定的硬件电路结构所利用。
综合器将VHDL程序转化的目标是底层的电路结构网表文件,这种满足VHDL设计程序功能描述的电路结构,不依赖于任何特定硬件环境;具有相对独立性。
综合器在将VHDL(硬件描述语言)表达的电路功能转化成具体的电路结构网表过程中,具有明显的能动性和创造性,它不是机械的一一对应式的“翻译”,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的设计。
l-3什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么?P6什么是综合? 答:在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。
有哪些类型?答:(1)从自然语言转换到VHDL语言算法表示,即自然语言综合。
(2)从算法表示转换到寄存器传输级(RegisterTransport Level,RTL),即从行为域到结构域的综合,即行为综合。
3线8线译码器
VHDL硬件描述语言与数字逻辑电路设计实验报告专业:电子科学与技术班级:电技091班姓名:赵月美学号:0907010029指导老师:顾平老师时间:20011年12月22日一.试验名称:3线8线译码器二.实验目的:(1)掌握QuartusII的实验环境;(2)掌握项目的建立方法;(3)学习文本文档的输入方法;(4)学习EDA工具对文本文件的编译;(5)学习波形文件的建立和保存;(6)学习EDA工具的软件仿真方法;(7)了解PLD的工程下载方法及硬件仿真。
三.实验原理:程序代码如下,主要用的是IF语句。
其格式如下:IF 条件THEN顺序处理语句;ELSIF 条件THEN顺序处理语句;…ELSE顺序处理语句;END IF;四.实验器材:计算机一台,试验箱一个,PC一台五.实验步骤:(1)编写程序如下:(2)仿真,验证程序无误!当出现Project comlilation was successful0 errors0 warnings时编译就成功咯!(3)建波形文件后,进行功能仿真的波形文件如下图所示(4)生成RTL文件(5)下载:首先选对应的管脚如下(6)下载成功六.实验总结通过实验的学习,熟悉并逐渐掌握了使用QuartusII软件进行硬件电路设计的步骤:(1)、创建工程(2)建立VHDL文件(3)编写程序(4)点击(start compilation)对.VHDL文件进行编译仿真(5)点击processing下拉菜单中的generate functional simulation netlist,生成功能性仿真网表。
(6)建立波形文件,在文件中查找节点保存后仿真(7)点击assignment下拉菜单选择pins,进行器件的功能引脚配置,仿真成功后点击,从而实现设计目标文件的下载。
七.实验心得:(1)需要特别注意的是在编译过程中,File的名字一定要和Entity的名字一样。
如果编译提示有错误,就根据提示一步一步的修改。
8线-3线编码器
Y2 Y1 Y0
Y0=X1 X3 X5 X7
VCC
D2 C2 NC B2 A2 Y2
14 13 12 11 10 9 8
7芯4L片S2A0
12 3 4 5 6 7 A1 B1 NC C1 D1 Y1 GND
VCC
D2 C2 NC B2 A2 Y2
14 13 12 11 10 9 8
7芯4L片S2B0
0 11 1 1 11 10
1
2
3
4
5
6
输出
Y2 Y1 Y0
00 0
真值 表
说明:输入低电平有效,Y2为最高位(8421BCD码)
十进
输入
输出
制数
X7 X6 X5 X4 X3 X2 X1 X0
Y2 Y1 Y0
0 1 1 1 1 1 1 00
10
0
1 1 1 1 1 1 1 00
01
1
2 1 1 1 1 1 0 01
学生验证结果、总结评价
作业:1.思考设计二—十进制编码器(输入与输 出均高电平有效);
2.完成工作业剩下的内容。
VCC D2 C2 NC B2 A2 Y2
14 13 12 11 10 9 8
1234567
A1 B1 NC C1 D1 Y1 GND
74LS20 4输入端双与非门
第一个与非门的输入引脚为 1、2、4、5 ,对应
列表真值逻辑表示逻辑电路推导化简画图实际逻辑功能分析实际逻辑功能时首先要确定输入量输出量并进行状态赋值搞清楚输入量输出量的逻辑关系这非常重要
8线-3线编码器的设计与制作
*** 六合职业教育中心校
【知识回顾】
1.什么是编码器?
EDA技术 项目1 编码器[精]
一.任务1:普通8_3编码器
1.任务分析 用一定位数的二进制数来表示十进制数码、字母、符号等信息称 为编码。 实现编码操作的电路称为编码器。编码器分为普通编码器和优先 编码器。 普通编码器任何时刻只允许一个输入有效。特点为“或”逻辑关 系。
普通8_3编码器真值表:其中输入8个互斥的信号,输出3位二进制 代码
仿真测试
2.任务实施 使用VHDL顺序语句,完成8_3 优先编码器的文本编辑:
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY bianma IS PORT ( i : IN STD_LOGIC_VECTOR( 7 DOWNTO 0 ) ;
y : OUT STD_LOGIC_VECTOR( 2 DOWNTO 0 ) ); END ENTITY bianma;
仿真测试:
ARCHITECTURE ONE OF bianma IS BEGIN
PROCESS (i) BEGIN IF i(7)='1' THEN y<="111"; ELSIF i(6)='1' THEN y<="110"; ELSIF i(5)='1' THEN y<="101"; ELSIF i(4)='1' THEN y<="100"; ELSIF i(3)='1' THEN y<="011"; ELSIF i(2)='1' THEN y<="010"; ELSIF i(1)='1' THEN y<="001"; ELSIF i(0)='1' THEN y<="000"; END IF; END PROCESS; END ARCHITECTURE ONE ;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY decoder47 ISPORT(DCBA:IN STD_LOGIC_VECTOR(3 DOWNTO 0);gfedcba:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );END ENTITY decoder47;ARCHITECTURE one OF decoder47 ISBEGINPROCESS(DCBA)BEGINCASE DCBA ISWHEN "0000"=> gfedcba<="0111111";WHEN "0001"=> gfedcba<="0000111";WHEN "0010"=> gfedcba<="1011011";WHEN "0011"=> gfedcba<="1001111";WHEN "0100"=> gfedcba<="1100110";WHEN "0101"=> gfedcba<="1101101";WHEN "0110"=> gfedcba<="1111100";WHEN "0111"=> gfedcba<="0000111";WHEN "1000"=> gfedcba<="1111111";WHEN "1001"=> gfedcba<="1100111";WHEN OTHERS=> NULL;END CASE;END PROCESS;END ARCHITECTURE one;仿真波形:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY encoder83 ISPORT(Y:IN STD_LOGIC_VECTOR(7 DOWNTO 0);A:OUT STD_LOGIC_VECTOR(2 DOWNTO 0) );END ENTITY encoder83;ARCHITECTURE one OF encoder83 ISBEGINPROCESS(Y)BEGINCASE Y ISWHEN "00000001"=> A<="000";WHEN "00000010"=> A<="001";WHEN "00000100"=> A<="010";WHEN "00001000"=> A<="011";WHEN "00010000"=> A<="100";WHEN "00100000"=> A<="101";WHEN "01000000"=> A<="110";WHEN "10000000"=> A<="111";WHEN OTHERS=> NULL;END CASE;END PROCESS;END ARCHITECTURE one;仿真波形:电子钟:层次化设计的最后顶层文件:仿真波形:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY count10000 ISPORT(clk1,clks,clr:IN STD_LOGIC;seg:OUT STD_LOGIC_VECTOR(6 DOWNTO 0);sel:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));END ENTITY count10000;ARCHITECTURE one OF count10000 ISSIGNAL in47:integer range 0 to 9;SIGNAL q0_tmp,q1_tmp,q2_tmp,q3_tmp:integer range 0 to 9;BEGINPROCESS(clk1,clr)BEGINIF clr='0' THENq0_tmp<=0;q1_tmp<=0;q2_tmp<=0;q3_tmp<=0;ELSIF(clk1'EVENT AND clk1='1') THENq0_tmp<=q0_tmp+1;IF q0_tmp=9 THENq0_tmp<=0;q1_tmp<=q1_tmp+1;IF q1_tmp=9 THENq1_tmp<=0;q2_tmp<=q2_tmp+1;IF q2_tmp=9 THENq2_tmp<=0;q3_tmp<=q3_tmp+1;IF q3_tmp=9 THENq3_tmp<=0;END IF;END IF;END IF;END IF;END IF;END PROCESS;PROCESS(clks)V ARIABLE q:integer range 0 to 3;BEGINIF clks'event and clks='1' thenq:=q+1;END IF;CASE q ISWHEN 0 => in47<=q0_tmp;sel<="0001";WHEN 1 => in47<=q1_tmp;sel<="0010";WHEN 2 => in47<=q2_tmp;sel<="0100";WHEN OTHERS => in47<=q3_tmp;sel<="1000";END CASE;END PROCESS;PROCESS(in47)BEGINCASE in47 ISWHEN 0=> seg<="1000000";WHEN 1=> seg<="1111001";WHEN 2=> seg<="0100100";WHEN 3=> seg<="0110000";WHEN 4=> seg<="0011001";WHEN 5=> seg<="0010010";WHEN 6=> seg<="0000010";WHEN 7=> seg<="1111000";WHEN 8=> seg<="0000000";WHEN 9=> seg<="0010000";WHEN OTHERS=> NULL;END CASE;END PROCESS;END ARCHITECTURE one;模为10000的计数器:仿真波形:MEALY型状态机:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mealy ISPORT(cp:IN STD_LOGIC;din: IN STD_LOGIC;op:OUT STD_LOGIC);END ENTITY mealy;ARCHITECTURE one OF mealy ISTYPE state IS(S0,S1,S2,S3);SIGNAL presentstate:state;SIGNAL nextstate:state;BEGINswitchtonextstate:PROCESS(cp)BEGINIF cp'EVENT AND cp='1' THENpresentstate<=nextstate;END IF;END PROCESS switchtonextstate;changestatemode:PROCESS(din,presentstate)BEGINCASE presentstate ISWHEN s0 => IF (din='0') THEN nextstate<=s0; op<='0';ELSE nextstate<=s1; op<='1';END IF;WHEN s1 => IF (din='1') THEN nextstate<=s1; op<='0';ELSE nextstate<=s2; op<='1';END IF;WHEN s2 => IF (din='1') THEN nextstate<=s2; op<='0';ELSE nextstate<=s3; op<='1';END IF ;WHEN s3 => IF(din='1') THEN nextstate<=s0; op<='1';ELSE nextstate<=s1; op<='0';END IF;WHEN OTHERS => nextstate<=s0; op<='0';END CASE;END PROCESS changestatemode;END one;状态图:仿真结果:MORE型状态机:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY more ISPORT(cp:IN STD_LOGIC;din: IN STD_LOGIC;op:OUT STD_LOGIC);END ENTITY more;ARCHITECTURE one OF more ISTYPE state IS(S0,S1,S2,S3);SIGNAL presentstate:state;SIGNAL nextstate:state;BEGINswitchtonextstate:PROCESS(cp)BEGINIF cp'EVENT AND cp='1' THENpresentstate<=nextstate;END IF;END PROCESS switchtonextstate; changestatemode:PROCESS(din,presentstate)BEGINCASE presentstate ISWHEN s0 => IF (din='0') THEN nextstate<=s0;ELSE nextstate<=s1;END IF;op<='0';WHEN s1 => IF (din='1') THEN nextstate<=s1;ELSE nextstate<=s2;END IF;op<='1';WHEN s2 => IF (din='1') THEN nextstate<=s2;ELSE nextstate<=s3;END IF ;op<='0';WHEN s3 => IF(din='1') THEN nextstate<=s0;ELSE nextstate<=s1;END IF;op<='1';WHEN OTHERS => nextstate<=s0; op<='0';END CASE;END PROCESS changestatemode;仿真结果:。