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 软件设计一个带进位的通用加法器,得出正确的仿真验证结果。
三、实验原理、方法和手段加法器,是产生数的和的装置。
常用作计算机算术逻辑部件,执行逻辑操作、移位与指令调用。
- 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.驱动安装失败。
解决方案:根据老师发的教程,更换别的方法进行安装。