EDA:4-16译码器电路的设计
EDA实验一3-8译码器的设计
《电子设计自动化》实验报告实验一实验名称:3-8译码器的设计专业及班级:姓名:学号:一、实验目的:1.掌握组合逻辑电路的设计方法。
2.;3.掌握VHDL语言的基本结构及设计的输入方法。
4.掌握VHDL语言的基本描述语句的使用方法。
二、实验步骤(附源代码及仿真结果图):1.建立工程,Quartus II --File--New project wizard(注意工程目录中不能出现中文字符,不能建立在桌面上);弹出窗口如图2-3所示。
图2-3 New Project Wizard 窗口2.点击next,在出现的对话框中输入如下项目信息:a.项目路径,如:D:\EDA experiment\decoder38;b.(c.项目名称,如:decoder38。
如图2-4所示:图2-4 项目路径和项目名称对话框3.点击2次next后,出现如图2-5所示的对话框:a.Device family中选择Cyclone IV E;b.Available devices中选择EP4CE115F29C7.图2-5 器件选择窗口4.~5.点击next后,出现EDA工具设置对话框。
在Simulation一行中,Tool Name选择ModelSim-Altera,Fomat(s)选择VHDL,如图2-6所示。
图2-6 EDA工具设置对话框6.点击next,出现如图2-7所示的对话框:图2-7 新建项目汇总对话框7.点击Finish后,出现如图2-8所示的界面:&图2-8 decoder38项目界面8.点击File->New->VHDL File,如图2-9所示。
点击ok关闭对话框。
图2-9 新建VHDL文件窗口9.在文本编辑框内键入如下程序:LIBRARY ieee;USE decoder38 ISPORT(;A, B,C,G1,G2A,G2B: IN STD_LOGIC;Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END decoder38;ARCHITECTURE Behavior OF decoder38 ISSIGNAL indata: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINindata <= C&B&A;PROCESS (indata, G1, G2A,G2B)#BEGINIF (G1='1' AND G2A='0' AND G2B='0') THENCASE indata ISWHEN "000"=>Y<="";WHEN "001"=>Y<="";WHEN "010"=>Y<="";WHEN "011"=>Y<="";WHEN "100"=>Y<="";】WHEN "101"=>Y<="";WHEN "110"=>Y<="";WHEN "111"=>Y<="01111111";WHEN OTHERS =>Y<="XXXXXXXX";END CASE;ELSEY<="";END IF;:END PROCESS;END Behavior;10.将文件保存为后,开始编译,点击Processing->Start Compilation,编译成功后,出现如图2-10所示界面:图2-10 编译成功界面10. 再次新建一个vhdl文件,键入如下的modelsim测试程序:LIBRARY ieee;)USE decoder38_tb ISEND decoder38_tb;ARCHITECTURE Behavior OF decoder38_tb ISCOMPONENT decoder38PORT (A,B,C,G1,G2A,G2B: IN STD_LOGIC;Y: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END COMPONENT;#SIGNAL A: STD_LOGIC:='0';SIGNAL B : STD_LOGIC:='0';SIGNAL C: STD_LOGIC:='0';SIGNAL G1: STD_LOGIC:='1';SIGNAL G2A: STD_LOGIC:='0';SIGNAL G2B: STD_LOGIC:='0';SIGNAL Y: STD_LOGIC_VECTOR(7 DOWNTO 0);CONSTANT CLK_PERIOD: TIME:=10ns;<BEGINA<=not A after CLK_PERIOD;B<=not B after 20ns;C<=not C after 40ns;U1: decoder38 port map(A=>A,B=>B,C=>C,G1=>G1,G2A=>G2A,G2B=>G2B,Y=>Y);END behavior;11. 将文件保存为,编译通过。
EDA译码器课程设计
EDA译码器课程设计一、课程目标知识目标:1. 理解EDA(电子设计自动化)的基本概念及其在数字电路设计中的应用;2. 掌握译码器的基本原理,了解其功能及在数字系统中的作用;3. 学会使用EDA工具进行译码器电路的设计与仿真。
技能目标:1. 能够运用所学知识,利用EDA工具绘制译码器的原理图;2. 培养动手实践能力,完成译码器电路的搭建与调试;3. 提高分析问题和解决问题的能力,通过对译码器电路的仿真,学会查找并解决电路故障。
情感态度价值观目标:1. 培养学生对电子工程领域的兴趣,激发创新意识;2. 培养学生的团队协作精神,提高沟通与表达能力;3. 增强学生的自信心,培养勇于面对挑战的精神。
课程性质:本课程为电子技术实践课程,注重理论与实践相结合,以培养学生的实际操作能力为主。
学生特点:学生为高中年级,具备一定的电子技术基础知识,对实践操作有较高的兴趣。
教学要求:结合学生特点和课程性质,采用启发式教学,引导学生主动探究,注重培养学生的动手能力和实际问题解决能力。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. EDA基本概念:介绍EDA的概念、发展历程及其在电子设计中的应用;参考教材章节:第一章 电子设计自动化概述2. 译码器原理:讲解译码器的工作原理、功能和应用;参考教材章节:第三章 数字电路基础,第四节 译码器与编码器3. EDA工具使用:教授如何使用EDA工具(如Multisim、Proteus等)进行译码器电路的原理图绘制与仿真;参考教材章节:第五章 电子设计自动化工具,第一节 原理图绘制与仿真4. 译码器电路设计:指导学生利用EDA工具设计简单的译码器电路;参考教材章节:第六章 数字电路设计实例,第二节 译码器电路设计5. 译码器电路搭建与调试:组织学生动手搭建译码器电路,进行调试与故障排查;参考教材章节:第七章 实践操作,第三节 数字电路搭建与调试6. 课程总结与评价:对所学内容进行总结,评估学生的学习成果;参考教材章节:第十章 课程总结与评价教学内容安排与进度:第1周:EDA基本概念学习;第2周:译码器原理学习;第3周:EDA工具使用教学;第4周:译码器电路设计与仿真;第5周:译码器电路搭建与调试;第6周:课程总结与评价。
4-16译码器实例
LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;ENTITY 4_16ym isPORT ( clk: in std_logic;x : IN STD_LOGIC_VECTOR(3 DOWNTO 0);k : IN STD_LOGIC_VECTOR(1 DOWNTO 0);q : OUT STD_LOGIC_vector(15 downto 0) ); END ;ARCHITECTURE one OF 4_16ym ISBEGINPROCESS( x,clk)variable J:std_logic_vector(1 downto 0);BEGINif k="11" thenif clk'event and clk='1' thenj:=j+1;end if;if j="00" thenCASE x ISwhen "0000"=> y<="0000000000000001" ;when "0001"=> y<="0000000000000010" ;when "0010"=> y<="0000000000000100" ;when "0011"=> y<="0000000000001000" ;when "0100"=> y<="0000000000010000" ;when "0101"=> y<="0000000000100000" ;when "0110"=> y<="0000000001000000" ;when "0111"=> y<="0000000010000000" ;when "1000"=> y<="0000000100000000" ;when "1001"=> y<="0000001000000000" ;when "1010"=> y<="0000010000000000" ;when "1011"=> y<="0000100000000000" ;when "1100"=> y<="0001000000000000" ;when "1101"=> y<="0010000000000000" ;when "1110"=> y<="0100000000000000" ;when "1111"=> y<="1000000000000010" ;when others => y<="0000000000000001" ;END CASE ;elsif j="01" thenCASE x ISwhen "0000"=> y<="0000000100000000" ;when "0001"=> y<="0000000010000000" ;when "0010"=> y<="0000001000000000" ;when "0011"=> y<="0000000001000000" ;when "0100"=> y<="0000010000000000" ;when "0110"=> y<="0000100000000000" ; when "0111"=> y<="0000000000010000" ; when "1000"=> y<="0001000000000000" ; when "1001"=> y<="0000000000001000" ; when "1010"=> y<="0010000000000000" ; when "1011"=> y<="0000000000000100" ; when "1100"=> y<="0100000000000000" ; when "1101"=> y<="0000000000000010" ; when "1110"=> y<="1000000000000000" ; when "1111"=> y<="0000000000000001" ; when others => y<="1111111111111111" ; END CASE ;elsif j="10" thenCASE x ISwhen "0000"=> y<="0000000000000011" ; when "0001"=> y<="0000000000001111" ; when "0010"=> y<="0000000000111111" ; when "0011"=> y<="0000000011111111" ; when "0100"=> y<="0000001111111111" ; when "0101"=> y<="0000111111111111" ; when "0110"=> y<="0011111111111111" ; when "0111"=> y<="1111111111111111" ; when "1000"=> y<="0011111111111111" ; when "1001"=> y<="0000111111111111" ; when "1010"=> y<="0000001111111111" ; when "1011"=> y<="0000000011111111" ; when "1100"=> y<="0000000000111111" ; when "1101"=> y<="0000000000001111" ; when "1110"=> y<="0000000000000011" ; when "1111"=> y<="1111111111111111" ; when others => y<="0000000000000001" ; END CASE ;elseCASE x ISwhen "0000"=> y<="0000000000000011" ; when "0001"=> y<="0000000000001111" ; when "0010"=> y<="0000000000111111" ; when "0011"=> y<="0000000011111111" ; when "0100"=> y<="0000001111111111" ; when "0101"=> y<="0000111111111111" ; when "0110"=> y<="0011111111111111" ; when "0111"=> y<="1111111111111111" ; when "1000"=> y<="0011111111111111" ;when "1010"=> y<="0000001111111111" ;when "1011"=> y<="0000000011111111" ;when "1100"=> y<="0000000000111111" ;when "1101"=> y<="0000000000001111" ;when "1110"=> y<="0000000000000011" ;when "1111"=> y<="1111111111111111" ;when others => y<="0000000000000001" ; END CASE ;end if;elsif k="00" thenCASE x ISwhen "0000"=> y<="0000000000000001" ; when "0001"=> y<="0000000000000010" ; when "0010"=> y<="0000000000000100" ; when "0011"=> y<="0000000000001000" ; when "0100"=> y<="0000000000010000" ; when "0101"=> y<="0000000000100000" ; when "0110"=> y<="0000000001000000" ; when "0111"=> y<="0000000010000000" ; when "1000"=> y<="0000000100000000" ; when "1001"=> y<="0000001000000000" ; when "1010"=> y<="0000010000000000" ; when "1011"=> y<="0000100000000000" ; when "1100"=> y<="0001000000000000" ; when "1101"=> y<="0010000000000000" ; when "1110"=> y<="0100000000000000" ; when "1111"=> y<="1000000000000010" ; when others => y<="0000000000000001" ; END CASE ;elsif k="01" thencase x iswhen "0000"=> y<="0000000100000000" ;when "0001"=> y<="0000000010000000" ;when "0010"=> y<="0000001000000000" ;when "0011"=> y<="0000000001000000" ;when "0100"=> y<="0000010000000000" ;when "0101"=> y<="0000000000100000" ;when "0110"=> y<="0000100000000000" ;when "0111"=> y<="0000000000010000" ;when "1001"=> y<="0000000000001000" ;when "1010"=> y<="0010000000000000" ;when "1011"=> y<="0000000000000100" ;when "1100"=> y<="0100000000000000" ;when "1101"=> y<="0000000000000010" ;when "1110"=> y<="1000000000000000" ;when "1111"=> y<="0000000000000001" ;when others => y<="1111111111111111" ; END CASE ;elseCASE x ISwhen "0000"=> y<="0000000000000011" ;when "0001"=> y<="0000000000001111" ;when "0010"=> y<="0000000000111111" ;when "0011"=> y<="0000000011111111" ;when "0100"=> y<="0000001111111111" ;when "0101"=> y<="0000111111111111" ;when "0110"=> y<="0011111111111111" ;when "0111"=> y<="1111111111111111" ;when "1000"=> y<="0011111111111111" ;when "1001"=> y<="0000111111111111" ;when "1010"=> y<="0000001111111111" ;when "1011"=> y<="0000000011111111" ;when "1100"=> y<="0000000000111111" ;when "1101"=> y<="0000000000001111" ;when "1110"=> y<="0000000000000011" ;when "1111"=> y<="1111111111111111" ;when others => y<="0000000000000001" ; END CASE ;end if;END;。
EDA技术课后答案
EDA习题第一章1。
1 EDA的英文全称是什么?EDA的中文含义是什么?答:EDA即Electronic Design Automation的缩写,直译为:电子设计自动化。
1.2 什么叫EDA技术?答:EDA技术有狭义和广义之分,狭义EDA技术就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术,或称为IES/ASIC自动设计技术.1。
3 利用EDA技术进行电子系统的设计有什么特点?答:①用软件的方式设计硬件;②用软件方式设计的系统到硬件系统的转换是由有关的开发软件自动完成的;③设计过程中可用有关软件进行各种仿真;④系统可现场编程,在线升级;⑤整个系统可集成在一个芯片上,体积小、功耗低、可靠性高。
1。
4 从使用的角度来讲,EDA技术主要包括几个方面的内容?这几个方面在整个电子系统的设计中分别起什么作用?答:EDA技术的学习主要应掌握四个方面的内容:①大规模可编程逻辑器件;②硬件描述语言;③软件开发工具;④实验开发系统.其中,硬件描述语言是重点。
对于大规模可编程逻辑器件,主要是了解其分类、基本结构、工作原理、各厂家产品的系列、性能指标以及如何选用,而对于各个产品的具体结构不必研究过细。
对于硬件描述语言,除了掌握基本语法规定外,更重要的是要理解VHDL的三个“精髓”:软件的强数据类型与硬件电路的惟一性、硬件行为的并行性决定了VHDL语言的并行性、软件仿真的顺序性与实际硬件行为的并行性;要掌握系统的分析与建模方法,能够将各种基本语法规定熟练地运用于自己的设计中。
对于软件开发工具,应熟练掌握从源程序的编辑、逻辑综合、逻辑适配以及各种仿真、硬件验证各步骤的使用.对于实验开发系统,主要能够根据自己所拥有的设备,熟练地进行硬件验证或变通地进行硬件验证。
EDA实验三组合逻辑电路设计(一)--编译码器设计
西安邮电学院实验中心实验报告院系电子工程学院班级学号姓名成绩教师签字实验日期实验名称组合逻辑电路设计(一)--编译码器设计_______________________________________________________一、实验目的二、实验所用仪表及主要器材三、实验原理简述四、实验测量记录:(如数据、表格、曲线、计算等)五、实验遇到的问题及解决办法:(余留问题,体会等)一、实验目的(1)熟悉组合逻辑电路的VHDL描述方法。
(2)掌握利用CPL器件实现组合逻辑数字电路的方法和过程。
(3)熟练掌握“case”语句与“if…else…”语句的用法。
二、实验所用仪表及主要器材PC,可编程逻辑实验电路板,下载线,USB电源线,双踪示波器,数字万用表,导线若干。
三、实验原理简述应用VHDL设计简单的逻辑电路四、实验内容在MAX+PULSII环境下,用VHDL语言按照输入—>编译—>仿真。
(1)8421BCD码转换为余3码转换表.在MAX+plusII 环境下,用VHDL 语言描述下列逻辑电路,并编译,仿真。
程序仿真结果:(2)设计一个优先编码器。
程序实现如下:仿真结果:五、实验结果见上述内容。
六、实验心得在本次实验中我学会了使用MAX+PLUSII软件的文本编程的方式设计电路。
在本次实验的文本编译环节中出现不少问题:(1)保存时文件名与实体名不一致,导致程序编译结果不正确。
(2)写程序时没有按照语法规则编写,使得文件编译频繁报错,标点的错误也会导致整个程序无法编译。
经过本次实验,加深了我对VHDL的文本编译设计的理解,今后我应该多练习MAX+PLUSII软件以减少错误。
EDA技术-VHDL-3.7译码器a3-8
3.7 3-8译码器程序设计与仿真实验1 实验目的(1) 掌握3-8译码器的工作原理。
(2) 学会用VHDL语言进行逻辑电路设计。
2 实验原理3-8译码器是把一组三位二进制代码译成对应的八个输出信号,其三位二进制译码器状态如表3.7.1所示。
表3.7.1 三位二进制译码器状态表3 实验内容(1) 用VHDL语言编写3-8译码器源程序。
(2) 将源程序进行综合、优化及功能仿真。
(3)把适配后生成的下载,通过编程器向FPGA下载,进行硬件调试和验证。
4 实验预习与思考(1) 熟悉3-8译码器的工作原理。
(2) 若下载器件的显示电路是共阴极的,编程时译码输出的二进制代码怎样改变。
5 VHDL仿真实验(1)为此工程新建一个文件夹。
启动QuartusⅡ软件工作平台。
新建工程设计文件名为decoder.vhd。
在新建的VHDL模型窗口下编写的源程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity decoder is --实体说明Port ( reset : in std_logic;input : in std_logic_vector(2 downto 0);output : out std_logic_vector(7 downto 0));end decoder;architecture Behavioral of decoder is --结构体beginprocess(reset,input) --进程beginif ( reset = '1') thenoutput <= "00000000";elsecase input iswhen "000" => output <= "00000001";when "001" => output <= "00000010";when "010" => output <= "00000100";when "011" => output <= "00001000";when "100" => output <= "00010000";when "101" => output <= "00100000";when "110" => output <= "01000000";when "111" => output <= "10000000";when others => output<= "00000000";end case;end if;end process;end Behavioral;(2) 创建工程及全程编译完成源代码输入后即可创建工程。
以3-8译码器构建4-16译码器设计论文
毕业设计(论文)题目:以3-8译码器构建4-16译码器学院(系):专业班级:学生学号:学生姓名:指导教师:导师评语及成绩目录1 引言 ............1.1 电子密码锁的特点 (1)1.2 市场前景 (2)2系统设计方案的研究 (3)2.1 本系统设计的任务 (3)2.2设计方案的比较 (3)2.3 系统的控制特点与性能要求 (5)2.4 系统实现的原理 (6)2.5 系统实现功能分析 (7)3 系统的设计 (9)3.1 A T89S52单片机 (9)3.2单片机串行通信原理 (12)3.3红外通信原理...............................................................4.程序设计 (21)4.1模块介绍 (21)4.2 程序流程图 (21)5实验测试与结果分析 ..........................5.4结果 (27)参考文献 (29)附录 (30)致谢 (5)摘要为了设计一个4-16译码器,可将两个3-8译码器(74LS138)和一个六反向器(74LS04)级联而得。
设计时,可分为三部分:电平输入控制部分、译码器及脸部分、译码显示部分。
出于方便取材、节约简单的因素,电平控制部分采用开关控制高低电平,用发光二极管显示;译码器部分用两块74LS138(74HC138)级联;译码显示部分用16个编号(0---15)的发光二极管显示,对应编号的灯亮,则为响应便哈所对应的型号输出。
关键词:译码;级联;电平输入;译码显示AbstractIn order to design a line decoder 4-16, two3-8decodgn can be divided into three parts: Level input control of the decoder of the cascade, as some decoding. For er(74LS138) derived from Cascade. Desiconvenience of material savings simple, level control switch control of the use of high-low, with light-emitting diodes display; decoding part by two 74LS138(74HC138) Cascade; decoding of the show with16 numbers(0---15), light-emitting diodes,the lights corresponding code, the corresponding numbers for the corresponding output-signal.Keyword:decoding;Cascade;levelinput;decoding show译码器的功能简介译码是编码的逆过程,它的功能是将具有特定含义的二进制码进行辨别,并转换成控制信号,具有译码功能的逻辑电路称为译码器。
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 软件设计一个带进位的通用加法器,得出正确的仿真验证结果。
三、实验原理、方法和手段加法器,是产生数的和的装置。
常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。
EDA实验报告 4位全加器,16位频率计数器
实验课程名称:EDA技术与应用实验项目名称4位全加器实验实验成绩实验者专业班级组别同组者实验日期一、实验目的1.进一步加深理解全加器的工作原理及电路组成,加深对EDA技术的掌握。
2.熟悉利用Quartus Ⅱ的原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个四位全加器的设计把握原理图输入方式设计的详细流程。
二、实验内容实验内容1:按照书本4.5.1节完成半加器和1位全加器的设计,包括用原理图输入,编译,综合,适配,仿真,实验板上的硬件测试,并将此全加器电路设置成一个元件符号入库。
实验内容2:建立一个更高层次的原理图,利用以上获得的1位全加器构成4位全加器,并完成编译,综合,适配,仿真和硬件测试。
三、实验仪器1.计算器及操作系统2.Quartus II软件四、实验原理一个4位全加器可以由4个1位全加器构成,加法器间的进位可以串行方式实现,即将低位加法器的进位输出cout与相邻的高位加法器的最低进位输入信号cin相接。
1、半加器描述根据半加器真值表可以画出半加器的电路图。
a b so Co0 0 0 00 1 1 01 0 1 01 1 0 1表1半加器h_adder真值表图1 半加器h_adder电路图2、1位全加器描述一位全加器可以由两个半加器和一个或门连接而成,因而可以根据半加器的电路原理图或真值表写出1位全加器的VHDL 描述。
图2 1位全加器电路图3、4位全加器设计描述4位全加器可以看做四个1位全加器级联而成,首先采用基本逻辑门设计一位全加器,而后通过多个1位全加器级联实现4位全加器。
其中,其中cin 表示输入进位位,cout 表示输出进位位,输入A 和B 分别表示加数和被加数。
S 为输出和,其功能可用布尔代数式表示为:S=A+B+Ciii i i o ABC ABC ABC ABC C +++=首先根据一位全加器的布尔代数式应用基本逻辑门设计一位全加器,而后仿真验证一位全加器设计,准确无误后生成元件,供4位全加器设计用。
4线-16线译码器
课程设计说明书题目: 4线-16线译码器系别:电子信息工程部班级: B041301 学号: B04130111 学生姓名:指导教师:成绩:沈航北方科技学院课程设计任务书教学部:电子信息工程部专业:自动化课程设计题目: 4线-16线译码器班级: B041301 学号: B04130111 姓名:课程设计时间: 2012 年 8 月 27 日至 2012 年 9 月7日课程设计的内容及要求:(一)主要内容:1.掌握数字电路知识,设计4线-16线译码器电路2.对相关元器件及其工作原理进行详细分析3.完成课程设计论文(二)基本要求:1.掌握数字集成电路组成的组合逻辑电路的分析和设计方法,并设计4线-16线译码器的逻辑图,画出4线16线的功能表,了解74L138的引脚图和连接方法2.连接电路实现功能3.分析各个元件的功能4.撰写3000字左右的论文(三)主要参考书:1.《数字电路与系统》唐志宏韩振振编2.《数字电路实验指导书》(四)评语:(五)成绩:指导教师:年月日负责老师:年月日摘要译码器是组合逻辑电路的一个重要的器件,其可以分为:变量译码和显示译码两类。
变量译码一般是一种较少输入变为较多输出的器件,一般分为2的n 次方译码和8421BCD码译码两类。
显示译码主要解决二进制数显示成对应的十、或十六进制数的转换功能,一般其可分为驱动LED和驱动LCD两类。
译码是编码的逆过程,在编码时,每一种二进制代码,都赋予了特定的含义,即都表示了一个确定的信号或者对象。
把代码状态的特定含义“翻译”出来的过程叫做译码,实现译码操作的电路称为译码器。
或者说,译码器是可以将输入二进制代码的状态翻译成输出信号,以表示其原来含义的电路。
根据需要,输出信号可以是脉冲,也可以是高电平或者低电平。
译码器主要在通信系统学科中学到,生活中有很多信息通信的例子,包含各种编码算法。
译码器的开发和利用给我们的生产生活带来了很大程度的提高。
所以我们对译码器的研究是很有必要的。
EDA 3-8译码器的设计
《EDA技术》课程实验报告学生姓名:**所在班级:**指导教师:** 老师记分及评价:报告满分3分得分一、实验名称实验4:3-8译码器的设计二、任务及要求【基本部分】1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成3-8译码器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【发挥部分】设计4-16译码器,完成仿真并封装成一个元件;新建原理图,调用一片74161和所设计的4-16译码器,完成具有16种花样的循环LED灯控制器的设计,并在实验箱上进行验证。
三、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity decode38 isport(abc:in std_logic_vector(2 downto 0);y:out std_logic_vector(7 downto 0));end;architecture one of decode38 isbeginprocess(abc)begincase abc iswhen"000" => y<="00000001";when"001" => y<="00000010";when"010" => y<="00000100";when"011" => y<="00001000";when"100" => y<="00010000";when"101" => y<="00100000";when"110" => y<="01000000";when"111" => y<="10000000";when others => y<="00000000";end case;end process;end;四、仿真及结果分析五、硬件验证1、引脚锁定情况表:六、小结通过本次实验,提高了自己独立思考问题、自己动手操作的能力,让我们对QuartusII 软件的操作更加了解。
VHDL语言与数字系统设计--西电
科目:VHDL语言与数字系统EDA设计专业:微电子与固体电子学学生姓名:陈庆宇提交日期: 2011年5月26号目录实验一 (1)实验二 (5)实验三 (9)实验四 (11)实验五 (17)作业 (27)实验一1. 实验内容1. 用IF 语句设计一个四-十六译码器;2. 用CASE 语句设计一个四-十六译码器;3. 用GENERATE 语句构造一个串行的十六进制计数器。
2. 实验目的会用VHDL 语言实现一些简单的组合逻辑和时序逻辑,学会使用相关EDA 软件进行VHDL 代码的输入、仿真。
3. 实验方案本实验有三个小实验组成,先分别将方案分别列出:a :用IF 语句设计一个四-十六译码器接口信号的定义如图--1:g1,g2a ,g2b 为片选信号,sel 为输入 编码,y 为译码输出b :用CASE 语句设计一个四-十六译码器 接口定义同样的如图-1:g1,g2a ,g2b 为片选信号,sel 为输入编码,y 为译码输出c :用GENERATE 语句构造一个串行的十六进制计数器先用行为描述设计一个D 触发器,然后用结构描述的方法将四个D 触发器用特定的接法连接起来。
其中clk 、clr 为时钟和清零输入,q 为计数输出。
4.仿真结果(仿真软件:Quartus II 7.2 )a:用IF语句实现的四-十六译码器的仿真结果上图为:片选信号无效的时候的仿真波形,输出为高电平。
上图为:片选信号有效的时候的仿真波形。
b:用CASE语句实现的一个四-十六译码器的仿真结果(直接让片选有效)c:用GENERATE语句构造的串行的十六进制计数器的仿真波形注:当clr为0时对计数结果清零,时钟上升沿计数器加1.5.关键部分代码a:用IF语句设计一个四-十六译码器PROCESS(G1,g2a,g2b,sel)beginif(g1='1'and g2a='0'and g2b='0')thenif(sel="0000")then y<="1111111111111110";elsif(sel="0001")then y<="1111111111111101";elsif(sel="0010")then y<="1111111111111011";elsif(sel="0011")then y<="1111111111110111";elsif(sel="0100")then y<="1111111111101111";elsif(sel="0101")then y<="1111111111011111";elsif(sel="0110")then y<="1111111110111111";elsif(sel="0111")then y<="1111111101111111";elsif(sel="1000")then y<="1111111011111111";elsif(sel="1001")then y<="1111110111111111";elsif(sel="1010")then y<="1111101111111111";elsif(sel="1011")then y<="1111011111111111";elsif(sel="1100")then y<="1110111111111111";elsif(sel="1101")then y<="1101111111111111";elsif(sel="1110")then y<="1011111111111111";elsif(sel="1111")then y<="0111111111111111";else y<="XXXXXXXXXXXXXXXX";end if;else Y<="1111111111111111";end if;end process;b:用CASE语句设计一个四-十六译码器case sel iswhen "0000"=>y<="1111111111111110";when "0001"=>y<="1111111111111101";when "0010"=>y<="1111111111111011";when "0011"=>y<="1111111111110111";when "0100"=>y<="1111111111101111";when "0101"=>y<="1111111111011111";when "0110"=>y<="1111111110111111";when "0111"=>y<="1111111101111111";when "1000"=>y<="1111111011111111";when "1001"=>y<="1111110111111111";when "1010"=>y<="1111101111111111";when "1011"=>y<="1111011111111111";when "1100"=>y<="1110111111111111";when "1101"=>y<="1101111111111111";when "1110"=>y<="1011111111111111";when "1111"=>y<="0111111111111111";when others =>y<="XXXXXXXXXXXXXXXX";end case;c:用GENERATE语句构造一个串行的十六进制计数器architecture count16er of count16 iscomponent dfip isport(d:in std_logic;clr:in std_logic;ck:in std_logic;q:out std_logic;qb:out std_logic);end component;signal clk_in:std_logic_vector(4 downto 0);beginclk_in(0)<=clk;G1:for i in 0 to 3 generateU0:dfip port map(d=>clk_in(i+1),ck=>clk_in(i),clr=>clr,q=>q(i),qb=>clk_in(i+1));end generate;end count16er;实验二1. 实验内容1. 设计一个两位二进制的加法器2. 设计一个两位的BCD 计数器2. 实验目的会用VHDL 语言的多种描述方式实现典型的组合逻辑和时序逻辑,学会使用相关EDA 软件进行VHDL 代码的输入、仿真。
数字电路课程设计EDA课程设计16路数显报警器
燕山大学EDA课程设计报告书题目:16路数显报警器姓名:班级:学号:成绩:一、设计题目及要求:1.设计16路数显报警器,16路中某一路断开时(可用高低电平表示断开和接通),用十进制数显示该路编号,并发出声音信号;2.报警时间持续10秒钟;3.当多路报警时,要有优先级,并将低优先级的报警存储,处理完高优先级报警后,再处理之(附加)。
二、设计过程:1.根据题目要求,16路数显报警器由6个电路模块构成:防抖电路模块,16路优先编码器模块,报警电路模块,366分频计数器模块,转换电路模块,扫描显示电路模块。
2.在题目要求中用高电平表示断开,低电平表示接通,所以在报警器中设计一个防抖电路;有因为当多路报警时有优先级,所以需要一个16线优先编码器,并且保证输入的数越大优先级越高。
3.报警时间持续10秒钟,所以用3个十进制计数器组成366分频计数器来实现。
4.在处理显示断路路线的编码问题中,运用组合逻辑电路构成转换电路,将16线优先编码器输出的结果进行加1并转换为一位shiwei,表示十位数(只有0和1两种状态),和四位二进制数b3,b2,b1,b0,表示个位数,最后用两个数码管显示出来。
三、设计电路:1.防抖电路:题目要求高电平表示断开,低电平表示接通,所以设计一个防抖电路,总防抖电路由16个小的防抖模块组成,每个防抖模块由D触发器组成。
每个小的防抖模块的电路图如图:总防抖电路图:2.16线优先编码器:当多路报警时,有优先级,所以需用一个16线优先编码器,电路图如下:3.转换电路:转换电路是由组合逻辑电路组成的,它将通过16线优先编码器输出的4位二进制数进行加1,同时大于10的数shiwei位显示高电平大于十的部分用4位二进制显示输出,转换电路的电路图如下:其仿真图形为:4.显示扫描电路:扫描电路实现对输入的二进制数进行扫描,扫描之后在7449显示译码管上显示出10进制数。
地址端通过一个二进制计数器进行控制,当s0为1时,用7号管显示出的是十位数,当s0为0时,用6号管数码管显示个位数。
利用74HC138制作4线—16线译码器
《组合逻辑电路的分析与设计》————利用74HC138制作4线—16线译码器院系:电子与信息工程学院利用74HC138制作4线—16线译码器一、实验目的1、掌握译码器的测试方法。
2、了解中规模集成译码器的功能,管脚分布,掌握其逻辑功能。
3、掌握用译码器构成组合电路的方法。
二、实验仪器1、数字电路实验箱2、74HC138 3-8线译码器 2片三、实验原理1、CMOS器件74HC138的逻辑功能及应用74HC138译码器可接受3位二进制加权地址输入(A0, A1和A2),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。
74HC138特有3个使能输入端:两个低有效(E1和E2)和一个高有效(E3)。
除非E1和E2置低且E3置高,否则74HC138将保持所有输出为高。
利用这种复合使能特性,仅需4片74HC138芯片和1个反相器,即可轻松实现并行扩展,组合成为一个1-32(5线到32线)译码器。
任选一个低有效使能输入端作为数据输入,而把其余的使能输入端作为选通端,则74HC138亦可充当一个8输出多路分配器,未使用的使能输入端必须保持绑定在各自合适的高有效或低有效状态。
其引脚排列如下图(一)所示图(一)74HC138功能表如下表(一)所示:表(一)3、用两个3线-8线译码器构成4线-16线译码器。
利用使能端能方便地将两个 3/8译码器组合成一个4/16译码器,如下图图(二)所示。
图(二)四、实验结果记录:1、74HC138逻辑功能测试结果记录如下表表(二)所示:输入输出E 1E2+E3A2A1AY0(非)Y1(非)Y2(非)Y3(非)Y4(非)Y5(非)Y6(非)Y7(非)1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 0 12 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 11 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 X X X X 1 1 1 1 1 1 1 1 X 1 X X X 1 1 1 1 1 1 1 1表(二)2、测试部分图片如下图图(三)、图(四)、图(五)、图(六)图(七)所示:图(三)图(四)图(五)图(六)图(七)五、实验心得:通过这次试验,使我学到了不少实用的知识,更重要的是,做实验的过程,思考问题的方法,这与做其他的实验是通用的,真正使我受益匪浅。
16位双译码器的VHDL实现
16位双译码器的VHDL实现软件:Quartus ii 8.1设计思路:先设计一个2-4译码器,在2-4译码器的基础上设计一个8-256双译码器,然后在8-256双译码器的基础上设计出16-65536双译码器。
双译码器需要与门阵列,而且与门阵列的设计才是此次设计的难点。
为简化设计,与门阵列单独设计,本文先设计了4*4的与门阵列,然后将4*4的与门阵列扩展成4*16的与门阵列,然后又将4*16的与门阵列扩展成16*16的与门阵列,然后又将16*16的与门阵列扩展成了16*256的与门阵列,最后又将16*256的与门阵列扩展成了256*256的与门阵列。
首先,先设计一个2-4译码器,代码如下:library ieee;use ieee.std_logic_1164.all;entity decoder2to4 isport(en:in std_logic;x:in std_logic_vector(1 downto 0);y:out std_logic_vector(3 downto 0));end decoder2to4;architecture rtl of decoder2to4 isbeginprocess(en,x)beginif(en='1')thencase x iswhen "00" => y<="0001";when "01" => y<="0010";when "10" => y<="0100";when "11" => y<="1000";when others => y<="0000";end case;elsey<="0000";end if;end process;end rtl;由2-4译码器扩展得到4-16双译码器需要用到4*4的与门阵列,所以需要设计一个4*4的与门阵列,代码如下:library ieee;use ieee.std_logic_1164.all;entity and4mul4 isport(x:in std_logic_vector(3 downto 0);y:in std_logic_vector(3 downto 0);z:out std_logic_vector(15 downto 0));end and4mul4;architecture structure of and4mul4 is component and2to1port(a,b: in std_logic;y: out std_logic);end component;beging1:for i in 3 downto 0 generateu1:and2to1 port map (x(0),y(i),z(i));end generate;g2:for i in 3 downto 0 generateu2:and2to1 port map (x(1),y(i),z(4+i));end generate;g3:for i in 3 downto 0 generateu3:and2to1 port map (x(2),y(i),z(8+i));end generate;g4:for i in 3 downto 0 generateu4:and2to1 port map (x(3),y(i),z(12+i));end generate;end structure;其中,与门and2to1的代码如下:library ieee;use ieee.std_logic_1164.all;entity and2to1 isport(a,b: in std_logic;y: out std_logic);end and2to1;architecture rtl of and2to1 isbeginprocess(a,b)variable comb : std_logic_vector(1 downto 0);begincomb := a & b;case comb iswhen "00" => y <= '0';when "01" => y <= '0';when "10" => y <= '0';when "11" => y <= '1';when others => y <= 'X';end case;end process;end rtl;由2-4译码器及4*4的与门阵列,扩展成4-16双译码器,代码如下:library ieee;use ieee.std_logic_1164.all;entity dec4to16 isport(en:in std_logic;x:in std_logic_vector(1 downto 0);y:in std_logic_vector(1 downto 0);z:out std_logic_vector(15 downto 0));end dec4to16;architecture structure of dec4to16 iscomponent decoder2to4port(en:in std_logic;x:in std_logic_vector(1 downto 0);y:out std_logic_vector(3 downto 0));end component;component and4mul4port(x:in std_logic_vector(3 downto 0);y:in std_logic_vector(3 downto 0);z:out std_logic_vector(15 downto 0));end component;signal c1:std_logic_vector(3 downto 0);signal c2:std_logic_vector(3 downto 0);beginu1:decoder2to4 port map(en,x,c1);u2:decoder2to4 port map(en,y,c2);u3:and4mul4 port map(c1,c2,z);end structure;然后,为了将4-16双译码器扩展成8-256双译码器,需要16*16的与门阵列。
代使能控制的4-16译码器设计
带使能控制的4-16译码器设计一、设计需求:采用逻辑门和HDL,分别设计“仅有一个高有效使能端且高有效译码输出的4-16译码器。
二、功能表表达式:Y0=EN·⎺D⎺C⎺B⎺A;Y1=EN·⎺D⎺C⎺BA;Y2= EN·⎺D⎺CB⎺A ;Y3= EN·⎺D⎺CBA;Y4=EN·⎺DC⎺B⎺A;Y5=EN·⎺DC⎺BA;Y6=EN·⎺DCB⎺A;Y7=EN·⎺DCBA;Y8=EN·D⎺C⎺B⎺A;Y9=EN·D⎺C⎺BA;Y010=EN·D⎺CB⎺A;Y11=EN·D⎺CBA;Y12=EN·DC⎺B⎺A;Y13=EN·DC⎺BA;Y14=EN·DCB⎺A;Y15=EN·DCBA;三、电路图电路图如下的图一图一:图为EN低有效使能,即所有的输出为0;=1;图二:当EN为高有效使能时,即EN=1,DCBA=1111,则输出Y15图三:当EN为高有效使能时,即EN=1,DCBA=0101,则输出Y=1;5经验证此电路图的所有输入输出正确,完备。
图一图二图三四、源代码:module decoder(EN,in,out);input [4:1] in;input EN;output [16:1] out;reg [16:1] out;always @ (EN or in)if(EN)case(in)4'b0000:out=16'b0000000000000001;4'b0001:out=16'b0000000000000010;4'b0010:out=16'b0000000000000100;4'b0011:out=16'b0000000000001000;4'b0100:out=16'b0000000000010000;4'b0101:out=16'b0000000000100000;4'b0110:out=16'b0000000001000000;4'b0111:out=16'b0000000010000000;4'b1000:out=16'b0000000100000000;4'b1001:out=16'b0000001000000000;4'b1010:out=16'b0000010000000000;4'b1011:out=16'b0000100000000000;4'b1100:out=16'b0001000000000000;4'b1101:out=16'b0010000000000000;4'b1110:out=16'b0100000000000000;4'b1111:out=16'b1000000000000000;default:out=16'b0000000000000000;endcaseelseout=16'b0000000000000000;endmodule功能仿真:如图,当EN=1时,输入in=0010,输出out=0000000000000100。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
when "0110" => y(6) <= '1';
when "0111" => y(7) <= '1';
when "1000" => y(8) <= '1';
when "1001" => y(9) <= '1';
when "1010" => y(10) <= '1';
when "1011" => y(11) <= '1';
when "1100" => y(12) <= '1';
when "1101" => y(13) <= '1';
when "1110" => y(14) <= '1';
when "1111" => y(15) <= '1';
when others => y <= "0000000000000000";
end case;
end process;
end architecture;
在完成源程序的编辑后,执行”Processing”菜单下的“Start Compilation”命令,对decoder4_16.vhd进行编译。
在完成对源文件的编译后,执行“File”菜单的“New”命令,或者直接按主窗口上的“创建新的文本文件”按钮,在弹出的新文件类型选择对话框中,选择“Vector Waveform File”生成仿真文件。
对引脚进行锁定。
执行”Assignments”菜单下的“Pins”命令,根据下图进行引脚设置。
用电缆连接电脑与设备箱,执行”Tools”菜单下的“Programmer”命令,在弹出的对话框中,单击“Hardware Setup”并在新弹出的对话框中选择驱动,然后退出至上一层对话框,单击“Start”进行下载烧录。
【实验数据整理与归纳】
decoder4_16_11.vhd 实际效果图
decoder4_16_11.vwf
【实验结果与分析】
计数译码系统电路的仿真波形如图decoder4_16_11.vwf所示,输入为"0011"时,输出应为"0000000000001000";输入为"0100"时,输出应为"0000000000010000",依此类推。
仿真结果验证了设计的正确性。
而实际情况与仿真结果相吻合。
【实验中遇到的问题及解决方案】
1.不知道如何对引脚进行锁定。
解决方案:上网搜寻教程。
2.驱动安装失败。
解决方案:根据老师发的教程,更换别的方法进行安装。