EDA三八译码器程序
EDA三八译码器程序
library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clk_div isport(clk:in std_logic;clk_div:out std_logic);end clk_div;architecture rt1 of clk_div issignal q_temp:integer range 0 to 5999999;beginprocess(clk)beginif(clk'event and clk='1') thenif(q_temp=5999999) thenq_temp<=0;elseq_temp<=q_temp+1;end if;end if;end process;process(clk)beginif(clk'event and clk='1') thenif(q_temp=5999999) thenclk_div<='1';elseclk_div<='0';end if;end if;end process;end rt1;library ieee;use ieee.std_logic_1164.all;entity seg7 isport(q: in std_logic_vector(3 downto 0);segment: out std_logic_vector(0 to 7));end seg7;architecture rt1 of seg7 isbeginprocess(q)begincase q iswhen "0000"=> segment <="11000000";when "0001"=> segment <="11111001";when "0010"=> segment <="10100100";when "0011"=> segment <="10110000";when "0100"=> segment <="10011001";when "0101"=> segment <="10010010";when "0110"=> segment <="10000010";when "0111"=> segment <="11011000";when "1000"=> segment <="10000000";when "1001"=> segment <="10010000";when others=> segment <="XXXXXXXX";end case;end process;end rt1;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity count3081 isport(enable:in std_logic;clk0:in std_logic;q1:out std_logic_vector(3 downto 0);q2:out std_logic_vector(3 downto 0);q3:out std_logic_vector(3 downto 0);q4:out std_logic_vector(3 downto 0));end count3081;architecture rt1 of count3081 issignal q1_temp,q2_temp,q3_temp,q4_temp:std_logic_vector(3 downto 0);beginprocess(clk0)beginif(clk0'event and clk0='1')thenif(enable='1')thenif(q4_temp="0011" and q3_temp="0000" and q2_temp="1000" and q1_temp="0001") thenq1_temp<="0000";q2_temp<="0000";q3_temp<="0000";q4_temp<="0000";elseif(q1_temp="1001")thenq1_temp<="0000";q2_temp<=q2_temp+1;elseq1_temp<=q1_temp+1;if(q2_temp="1001")thenq2_temp<="0000";q3_temp<=q3_temp+1;elseq2_temp<=q2_temp+1;if(q3_temp="1001")thenq3_temp<="0000";q4_temp<=q4_temp+1;elseq3_temp<=q3_temp+1;if(q4_temp="0011")thenq4_temp<="0000";end if;end if;end if;end if;end if;end if;end if;q1<=q1_temp;q2<=q2_temp;q3<=q3_temp;q4<=q4_temp;end process;end rt1;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ch30 isport(clk:in std_logic;enable:in std_logic;segment1:out std_logic_vector(0 to 7);segment2:out std_logic_vector(0 to 7);segment3:out std_logic_vector(0 to 7);segment4:out std_logic_vector(0 to 7));end ch30;architecture rt1 of ch30 iscomponent clk_divport(clk:in std_logic;clk_div:out std_logic);end component;component count3081port(enable:in std_logic;clk0:in std_logic;q1:out std_logic_vector(3 downto 0);q2:out std_logic_vector(3 downto 0);q3:out std_logic_vector(3 downto 0);q4:out std_logic_vector(3 downto 0));end component;component seg7port(q: in std_logic_vector(3 downto 0); segment: out std_logic_vector(0 to 7));end component;signal x:std_logic;signal q1:std_logic_vector(3 downto 0);signal q2:std_logic_vector(3 downto 0);signal q3:std_logic_vector(3 downto 0);signal q4:std_logic_vector(3 downto 0);beginU0:clk_div port map(clk,x);U1:count3081 port map(enable,x,q1,q2,q3,q4);U2:seg7 port map(q1,segment1);U3:seg7 port map(q2,segment2);U4:seg7 port map(q3,segment3);U5:seg7 port map(q4,segment4);end;。
EDA设计38译码器
班级:通信13-3班姓名:王亚飞学号:1306030318 指导教师:成绩:电子与信息工程学院信息与通信工程系摘要EDA技术是以微电子技术为物理层面,现代电子设计技术为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。
而VHDL语言是硬件描述语言之一,其广泛应用性和结构的完整性使其成为硬件描述语言的代表。
随着社会经济和科技的发展,越来越多的电子产品涌如我们的日常生活当中,在日常生活中译码器起着不可忽视的作用。
本设计就是运用VHDL语言设计的3-8译码器。
3-8译码器电路的输入变量有三个即D0,D1,D2,输出变量有八个Y0-Y7,对输入变量D0,D1,D2译码,就能确定输出端Y0-Y7的输出端变为有效(低电平),从而达到译码目的。
关键词:EDA;3-8译码器1实验目的1、通过一个简单的3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2、初步掌握VHDL语言的常用语句。
3、掌握VHDL语言的基本语句及文本输入的EDA设计方法。
2实验背景2.1 VHDL的简介VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
但是,由于它在一定程度上满足了当时的设计需求,于是他在1987年成为A I/IEEE的标准(IEEE STD 1076-1987)。
1993年更进一步修订,变得更加完备,成为A I/IEEE的A I/IEEE STD 1076-1993标准。
目前,大多数的CAD厂商出品的EDA软件都兼容了这种标准。
VHDL的英文全写是:VHSIC (Very High eed Integrated Circuit)Hardware Descriptiong Language.翻译成中文就是超高速集成电路硬件描述语言。
因此它的应用主要是应用在数字电路的设计中。
初识EDA--2三八译码器
2021/4/4
15
5-11 保存设计文件对话框
3、对设计文件进行编译
QUARTUSII编译器窗口包含了对设计文件处理的全过程。在 QUARTUSII软件中选择Tool>Compiler Tool菜单项,则出现 QUARTUSII的编译器窗口,如图5-12所示,图中标明了全编译过 程各个模块的功能。
2021/4/4
5-4 器件选择界面
6
首先在对话框的左上方的Family下拉菜单中选取Cyclone,在中 间右边的Speed grade下拉菜单中选取8,在左下方的Available devices框中选取EP1C6Q240C8 ,点击NEXT完成器件的选取, 进入EDA TOOL设定界面如图1-7所示。
2021/4/4
14
5-10 设计文件的输入
6)完成图形编辑的输入之后,需要保存设计文件或重新命名设计 文件。选择File>Save As…项,出现如图5-11所示对话框,选择 好文件保存目录,并在文件名栏输入设计文件名。如需要将设计文 件添加到当前工程中,则选择对话框下面的Add file to current project复选框,单击保存按钮即可保存文件。需要注意的是,在 整个设计文件保存的过程当中,都需要遵循设计输入法的一般规则。
一、实验目的
1、通过一个简单的3—8译码器的设计,掌握组合逻辑电路的设 计方法。
2、初步了解QUARTUSII原理图输入设计的全过程。 3、掌握组合逻辑电路的静态测试方法。
二、实验内容 在本实验中,用三个拨动开关来表示三八译码器的三个输入用八
个LED来表示三八译码器的八个输出。通过输入不同的值来观察输 入的结果与三八译码器的真值表是否一致。当开关闭合时其输出为 低电平,反之输出高电平。
3-8译码器设计
《EDA技术》课程实验报告学生姓名:张叶所在班级:通信1301指导教师:黄科老师记分及评价:一、实验名称实验4:3-8译码器的设计二、任务及要求【基本部分】1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成3-8译码器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【发挥部分】设计4-8译码器,完成仿真并封装成一个元件;新建原理图,调用一片74161和所设计的4-8译码器,完成具有16种花样的循环LED灯控制器的设计,并在实验箱上进行验证。
三、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity ky isport(A :in std_logic_vector(2 downto 0);Y :out std_logic_vector(7 downto 0));end entity ky;architecture ky_a of ky isbeginprocess(A)begincase A iswhen "000" => Y<="11111110";when "001" => Y<="11111101";when "010" => Y<="11111011";when "011" => Y<="11110111";when "100" => Y<="11101111";when "101" => Y<="11011111";when "110" => Y<="10111111";when others => Y<="01111111"; end case;end process;end architecture ky_a;四、仿真及结果分析仿真结果五、硬件验证1、引脚锁定情况表:引脚情况锁定表六、小结在本次实验中,老师教我们用QuartusII软件设计并仿真了3-8译码器。
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) 创建工程及全程编译完成源代码输入后即可创建工程。
eda第二次实验 38译码器
实验二组合逻辑电路的VHDL模型实验一、实验目的1、掌握组合逻辑和时序逻辑电路的设计方法。
2、掌握组合逻辑电路的静态测试方法。
加深FPGA设计的过程,并比较原理图输入和文本输入的优劣。
3、了解通用同步计数器,异步计数器的使用方法。
4、理解积分分频器的原理。
二、硬件要求拨位开关、FPGA主芯片EP1K30QC208、LED显示模块三、实验原理译码器是输入数码和输出数码之间的对应关系,也就是说,“输入码和输出码之间的对应表”这应该算是设计译码器的必须条件。
译码器常用来做码和码之间的转换器,也常被用于地址总线或用作电路的控制线。
例如下面为常见的3×8译码器的真值表:实验中可根据需要,为3×8译码器加入使能控制脚。
一般的分频器可获得的分频频率种类分布不均匀,积分分频,能比较好的解决这个问题。
1、分频结果=来源频率×N/(2ⁿ-1);2、频率波形不均匀。
四、实验内容及步骤本实验内容是完成38译码器和5/8分频器的设计,然后将3×8译码器的结果在实验箱上实现,5/8分频器则能正确仿真、显示,实验步骤如下:1、编写3×8译码器的VHDL代码。
2、用MaxPlusII对其进行编译仿真。
3、在仿真确定无误后,选择芯片ACEX1K EP1K30QC208。
4、给芯片进行管脚绑定,在此进行编译。
5、根据自己绑定的管脚,在实验箱上对键盘接口、显示接口和FPGA之间进行正确连线。
6、给目标板下载代码,在开关输入键值,观看实验结果。
7、编写5/8分频器的VHDL代码。
8、用MaxPlusII对其进行编译仿真。
9、使用WaveForm进行波形仿真。
五、程序代码1. 38译码器library ieee;use ieee.std_logic_1164.all;entity a3toy8 isport (en:in std_logic;a:in std_logic_vector(2 downto 0);b:in std_logic_vector(2 downto 0);y:out std_logic_vector(7 downto 0);YM: out std_logic_vector(7 downto 0));end entity a3toy8;architecture a3y8 of a3toy8 issignal t:std_logic_vector(3 downto 0);signal v:std_logic_vector(3 downto 0);begint <= en & a(2 downto 0);process(t(3 downto 0))begincase t(3 downto 0) iswhen "1000" => Y(7 downto 0) <= "00000001";when "1001" => Y(7 downto 0) <= "00000010";when "1010" => Y(7 downto 0) <= "00000100";when "1011" => Y(7 downto 0) <= "00001000";when "1100" => Y(7 downto 0) <= "00010000";when "1101" => Y(7 downto 0) <= "00100000";when "1110" => Y(7 downto 0) <= "01000000";when "1111" => Y(7 downto 0) <= "10000000";when others => Y(7 downto 0) <= "00000000";end case;end process;v <= t;process(v(3 downto 0))begincase v(3 downto 0) isWHEN "1000" => YM(7 downto 0) <= "01100000";WHEN "1001" => YM(7 downto 0) <= "11011010";WHEN "1010" => YM(7 downto 0) <= "11110010";WHEN "1011" => YM(7 downto 0) <= "01100110";WHEN "1100" => YM(7 downto 0) <= "10110110";WHEN "1101" => YM(7 downto 0) <= "10111110";WHEN "1110" => YM(7 downto 0) <= "11100000";WHEN "1111" => YM(7 downto 0) <= "11111110";when others => YM(7 downto 0) <= "00000000";end case;end process;end architecture a3y8;本代码是通过控制拨动开关来控制led灯,并且在数码管上显示发亮的是第几盏led。
EDA实验—译码器设计
电子信息工程学系实验报告课程名称:EDA技术与实验实验项目名称:三八译码器设计实验时间:班级:通信091 姓名:Jxairy 学号:实验目的:1.熟悉ALTERA公司EDA设计工具软件max+plusⅡ。
2.掌握max+plusⅡ文本、原理图设计及其仿真。
实验环境:Windows 7、max+plusⅡ10等。
实验原理:(详见实验分析部分。
)实验内容:1.运用max+plusⅡ软件,设计三八译码器,掌握max+plusⅡ软件的文本设计流程。
2.运用max+plusⅡ软件,设计三八译码器,掌握max+plusⅡ软件的原理图设计流程。
3.了解和熟悉max+plusⅡ软件的菜单界面和命令功能。
实验过程:一、三八译码器文本设计:(1)新建文本:选择菜单File下的New,出现如图2.1所示的对话框,在框中选中“Text Editorfile”,按“OK”按钮,即选中了文本编辑方式。
(2)另存为Verilog编辑文件,如图2.2所示。
(3)在编辑窗口中输入程序。
图2.1 新建文本图2.2 另存为.V编辑文件(4)设置当前文本:在MAX+PLUS II中,在编译一个项目前,您必须确定一个设计文件作为您的当前项目。
请按下列步骤确定项目名:在File menu 菜单中选择Project Name项,将出现Project Name 对话框:在Files 框内,选择您的设计文件。
选择“OK”。
如图2.3所示。
图2.3 设置当前仿真的文本设计(5)打开编译器窗口:在MAX—plusⅡ菜单内选择Compiler 项,即出现如图2.4的编译器窗口。
图2.4 编译器窗口选择Start即可开始编译,MAX+PLUS II编译器将检查项目是否有错,并对项目进行逻辑综合,然后配置到一个Altera 器件中,同时将产生报告文件、编程文件和用于时间仿真用的输出文件。
(6)建立波形编辑文件:选择菜单File下的New选项,在出现的New对话框中选择“Waveform Editor File”,单击OK后将出现波形编辑器子窗口。
EDA3-8译码器的设计
《EDA技术》课程实验报告学生姓名:所在班级:电信1102指导教师:记分及评价:报告满分3分得分一、实验名称实验4:3-8译码器的设计二、任务及要求【基本部分】1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成3-8译码器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【发挥部分】修改设计,完成3-6译码器的设计,并进行时序仿真。
三、实验程序library ieee;use ieee.std_logic_1164.all;entity seqs isport(s:in std_logic_vector(2 downto 0);y:out bit_vector(7 downto 0));end entity seqs;architecture art of seqs isbegin---- s<=s1 & s2;process(s)beginif(s="000" ) theny<= "00000001";elsif(s="001" ) theny<= "00000010";elsif(s="010" ) theny<= "00000100";elsif(s="011" ) theny<= "00001000";elsif(s="100" ) theny<= "00010000";elsif(s="101" ) theny<= "00100000";elsif(s="110" ) theny<= "01000000";elsif(s="111" ) theny<= "10000000";elsenull;end if;end process;end art;四、仿真及结果分析图4-1 3-8译码器仿真图用三位拨码开关代表译码器的输入端a、b、c,将之分别与EP1K30TC144-3芯片的相应管脚相连;用LED灯来表示译码器的输出,将D0...D7对应的管脚分别与8只LED 灯相连。
38译码器DEA设计
课程设计各个部分由VHDL实现后,利用EDA工具对各部分进行了时序仿真(Timing Simulation),其目的是通过时序可以更清楚的了解程序的工作过程。
3.2.1三-八译码器的设计
关于三-八译码器的工作框图如图3.2所示。
.
图3.3三-八译码器的工作框图
三-八译码器由VHDL程序来实现,下面是其中一段VHDL关键代码:
5. 支持模块化设计,可将大规模设计项目分解成若干个小项目,还可以把已有的设计项目作为一个模块调用。
6. 对于用VHDL完成的一个确定设计,可以利用EDA工具进行逻辑综合和优化,并能自动地把VHDL描述转变成门电路级网表文件。
7. 设计灵活,修改方便,同时也便于设计结果的交流、保存和重用,产品开发速度快,成本低。
1. 作为HDL的第一个国际标准,VHDL具有很强的可移植性。
2. 具有丰富的模拟仿真语句和库函数,随时可对设计进行仿真模拟,因而能将设计中的
错误消除在电路系统装配之前,在设计早期就能检查设计系统功能的可行性,有很强的预测能力。
3.VHDL有良好的可读性,接近高级语言,容易理解。
4. 系统设计与硬件结构无关,方便了工艺的转换,也不会因工艺变化而使描述过时。
END;
ARCHITECTURE BEHAVIOR OF yima38a IS
BEGIN
CASE A IS
WHEN"000"=>Y<="00000001";
WHEN"001"=>Y<="00000010";
WHEN"010"=>Y<="00000100";
EDA实验3-8线译码器
实验五 3-8线译码器一、实验目的1、熟悉常用译码器的功能逻辑。
2、掌握复杂译码器的设计方法。
二、实验原理1、总体思路以EP2C5中的三个拨位开关,SW3,SW2,SW1为三个输入信号,可以代表8种不同的状态,该译码器对这8种状态译码,并把所译码的结果在七段LED数码管上显示出来。
2、3-8线译码器原理图如下图所示:三、实验程序实验参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DECODE ISPORT(DATA_IN :IN STD_LOGIC_VECTOR(2 DOWNTO 0);LEDOUT,DATA_OUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);LEDW :OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END DECODE;ARCHITECTURE ADO OF DECODE ISSIGNAL OUTA,D_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINLEDW<="000";PROCESS (DATA_IN)VARIABLE DIN: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINDIN:=DATA_IN;LEDOUT<=OUTA;DATA_OUT<=D_OUT;CASE DIN ISwhen "000" => OUTA<="00111111" ; --"0"when "001" => outa<="00000110" ; --"1"when "010" => outa<="01011011"; --"2"when "011" => outa<="01001111"; --"3"when "100" => outa<="01100110"; --"4"when "101" => outa<="01101101"; --"5"when "110" => outa<="01111101"; --"6"when "111" => outa<="00000111"; --"7"WHEN OTHERS => OUTA<="XXXXXXXX";END CASE;CASE DIN ISWHEN "000" => D_OUT<="00000000";WHEN "001" => D_OUT<="00000001";WHEN "010" => D_OUT<="00000010";WHEN "011" => D_OUT<="00000100";WHEN "100" => D_OUT<="00001000";WHEN "101" => D_OUT<="00010000";WHEN "110" => D_OUT<="00100000";WHEN "111" => D_OUT<="01000000";WHEN OTHERS=> D_OUT<="XXXXXXXX";END CASE;END PROCESS;END ADO;四、实验步骤1、打开Quartus II,选择“File”菜单下的“New Project Wizard”,建立Project及顶层实体的名称为ADO,期间,选择的目标芯片为EP2C5Q208C8N;2、选择“File”菜单下的“New”命令,在“New”窗口中选择“VHDL Files”,输入程序,进行编译;3、选择“File”菜单中的“New”项,在“New”窗口中选择“Other Files”中的“VectorWaveform File”项,打开空白的波形编辑器,输入所有的信号节点,给输入随机赋值,保存,单击工具栏上的快捷方式,进行波形仿真;4、打开“Assignments”菜单下的“Pins”命令,打开引脚锁定窗口,进行引脚锁定,再次对VHDL Files进行编译;5、连接EDA实验箱,将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到 SOPC下载的一边,将JPLED1短路帽右插,JPLED的短路帽全部上插,请将JP103的短路帽全部插上。
实验三 3-8译码器的设计
实验三3-8译码器的设计
一.实验目的:
1、通过一个简单的3-8译码器的设计,让学生掌握组合逻辑电路的设计方法。
2、初步掌握VHDL语言的常用语句。
3、掌握VHDL语言的基本语句及文本输入的EDA设计方法。
二、设计要求
设计一个3—8译码器使其满足如下真值表:
1.采用原理图输入法利用门电路进行设计并实现仿真、下载。
2.利用VHDL语言输入进行设计并进行仿真。
三、预习要求:
1.熟悉3-8译码器原理
2.根据原理绘制原理图。
3.初步写出VHDL语言程序。
四、实验记录
1.原理图及源程序。
2.仿真波形。
(两种方法)
3.延时分析。
(两种方法)。
EDA课程设计-3-8译码器
第一章绪论1.1 EDA技术介绍EDA(Electronic Design Automation)技术是现代电子工程领域的一门新技术。
基于可编程逻辑器件的数字系统EDA技术可以简单概括为以大规模可编程逻辑器件为设计载体,通过硬件描述语言输入给相应开发软件,经过编译和仿真,最终下载到设计载体中,从而实现系统电路。
在数字系统中,能将二进制代码翻译成所表示信息的电路称为译码器。
译码器是一个多输入、多输出的组合逻辑电路。
它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。
译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数据分配,存贮器寻址和组合控制信号等。
不同的功能可选用不同种类的译码器。
而常用的译码器有二进制译码器,二—十进制译码器和显示译码器。
译码器可分为通用译码器和显示译码器两大类。
前者又分为变量译码器和代码变换译码器。
变量译码器(又称二进制译码器),用以表示输入变量的状态,如2线-4线、3线-8线和4线-16线译码器。
若有n个输入变量,则有2n个不同的组合状态,就有2n 个输出端供其使用。
而每一个输出所代表的函数对应于n个输入变量的最小项。
本次课程设计的题目为3-8译码器。
要求用掌握3-8译码器的构成、原理与设计方法;熟悉quartus60软件的使用方法;能用VHDL语言设计3-8译码器电路;并仿真出3—8译码器的功能。
第二章 3—8译码器2.1 3—8译码器介绍译码器属于组合逻辑电路,它的逻辑功能是将二进制代码按其编码时的原意译成对应的输出高、底电平信号,又叫解码器。
在数字电子技术中,它具有非常重要的地位,应用也很广泛。
它除了常为其它集成电路产生片选信号之外,还可以作为数据分配器、函数发生器用,而且在组合逻辑电路设计中它可替代繁多的逻辑门,简化设计电路。
这次我们运用的3 线-8 线译码器就是一个典型例子。
38译码器为3 线-8 线译码器,共有 54/74S138和 54/74LS138 两种线路结构型式,其主要电特性的典型值如下:当一个选通端(G1)为高电平,另两个选通端(/(G2A)和/(G2B))为低电平时,可将地址端(A、B、C)的二进制编码在一个对应的输出端以低电平译出。
3线8线译码器设计
课程设计任务书学生姓名:陈莲专业班级:自动化0607指导教师:李向舜工作单位:自动化学院题目: 3线-8线译码器初始条件:1.以上版本软件;2.课程设计辅导资料:“数字电路EDA入门”、“VHDL程序实例集”、“EDA技术与VHDL”、“EDA与数字系统设计”等;3.先修课程:电路、电子设计EDA、电子技术基础等。
4.要紧涉及的知识点:门电路、组合逻辑电路、时序逻辑电路等。
要求完成的要紧任务:(包括课程设计工作量及其技术要求,和说明书撰写等具体要求)1.课程设计时刻:1周;2.课程设计内容:依照指导教师给定的题目,按规定选择其中1套完成;3.本课程设计统一技术要求:研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部份的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(仿真结果),并对实验结果进行分析和总结。
具体设计要求包括:①温习EDA的相关技术与方式;②把握VHDL或Verilog语言,并要求能编写程序。
③Quartus软件的利用:把握程序编辑、编译、调试、仿真方式。
④设计相关简单的电路,完成既定的功能。
4.课程设计说明书按学校“课程设计工作标准”中的“统一书写格式”撰写,具体包括:①目录;②译码器相关的理论分析、归纳和总结;③3线-8线译码器的结构组成、原理分析及真值表。
④程序设计框图、程序代码(含注释);⑤给出程序中要紧函数或语句的功能说明和利用说明;⑥给出程序仿真运行结果和图表、和实验结果分析和总结;⑦课程设计的心得体会(至少500字);⑧参考文献;⑨其它必要内容等。
时刻安排:指导教师签名:年月日系主任(或责任教师)签名:年月日摘要本次能力拓展训练要求设计一个3线-8线译码器,要紧在于分析3线-8线译码器的组成和其实现原理,本次拓展训练要紧目的在于研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部份的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码,上机调试运行程序,记录实验结果,并对实验结果进行分析和总结。
38译码器-EDA课设
摘要EDA技术是以微电子技术为物理层面,现代电子设计技术为灵魂,计算机软件技术为手段,最终形成集成电子系统或专用集成电路ASIC为目的的一门新兴技术。
而VHDL语言是硬件描述语言之一,其广泛应用性和结构的完整性使其成为硬件描述语言的代表。
随着社会经济和科技的发展,越来越多的电子产品涌如我们的日常生活当中,在日常生活中译码器起着不可忽视的作用。
本设计就是运用VHDL语言设计的3-8译码器。
3-8译码器电路的输入变量有三个即D0,D1,D2,输出变量有八个Y0-Y7,对输入变量D0,D1,D2译码,就能确定输出端Y0-Y7的输出端变为有效(低电平),从而达到译码目的。
关键词:EDA,输入,输出,译码器目录摘要 (I)1 MAX+plusII及VHDL简介 (1)1.1 MAX+plusII 基本介绍 (1)1.1.1 MAX+plusII的概念 (1)1.1.2 使用MAX+plusII设计的特点 (1)1.2 硬件描述语言——VHDL (1)1.2.1 VHDL的简介 (1)1.2.2 VHDL语言的特点 (1)1.2.3 VHDL的设计流程 (2)2 3-8译码器的介绍 (3)2.1 3-8译码器 (3)2.2 3-8译码器工作原理 (3)2.3 3-8译码器作用 (4)3 设计思路与程序 (5)4 系统仿真 (6)4.1程序的编译 (6)4.2 波形仿真 (7)总结 (9)致谢 (10)参考文献 (11)附录 (12)3-8译码器设计1 MAX+plusII及VHDL简介1.1 MAX+plusII 基本介绍1.1.1 MAX+plusII的概念ALTERA公司的MAX+plusII是其中较常被使用的EDA开发环境,它操作方便、功能强大,提供了原理图输入和VHDL语言输入功能,在环境中可以完成编译、查错、设计驱动信号、逻辑功能模拟、时序功能模拟、对FPGA/CPLD芯片编程等功能。
MAX+plusII支持下列FPGA/CPLD器件的编程:FPGA器件包括ACEX1K系列、FLEX系列;CPLD器件MAX系列。
EDA期末设计之VHDL的3-8译码器
VHDL语言程序设计报告实验名称:3--8译码器的VHDL程序设计指导老师:学生:时间:2012年6月23日三-八译码器三输入,八输出。
当输入信号按二进制方式的表示值为N时(输入端低电平有效),输出端从零到八记,标号为N输出端输出低电平表示有信号产生,而其它则为高电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为低电平的情况下,能表示所有的输入组合,因此不需要像编码器实验那样再用一个输出端指示输出是否有效。
但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。
本例设计中没有考虑使能输入端,自己设计时可以考虑加入使能输入端时,程序如何设计。
三-八译码器真值表输入输出A2 A1 A0 Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y00 0 0 0 0 0 0 0 0 0 10 0 1 0 0 0 0 0 0 1 00 1 0 0 0 0 0 0 1 0 00 1 1 0 0 0 0 1 0 0 01 0 0 0 0 0 1 0 0 0 01 0 1 0 0 1 0 0 0 0 01 1 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0一、实验目的与要求:1、通过3:8译码器的设计,熟悉ALTERA公司EDA设计工具软件QuartusII 5.0。
2、熟悉原理图输入及仿真步骤。
3、掌握组合逻辑电路的静态测试方法4、初步了解可编程器件设计的全过程。
5、理解硬件描述语言和具体电路的映射关系。
二、实验步骤与内容:1、创建工程。
2、新建文件夹。
3、画出正确的原理图,保存,编译。
4、波形仿真,分配引脚,编译。
5、下载到实验板,进行功能验证。
三、实验源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SANBA ISPORT(D:IN STD_LOGIC_VECTOR(2 DOWNTO 0);G1,G2A,G2B:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ;ARCHITECTURE XIANI OF SANBA ISBEGINPROCESS(D,G1,G2A,G2B)BEGINIF (G1='0')THEN Y<="11111111";ELSIF(G1='1' AND G2A='0' AND G2B='0')THENIF (D(2)='0' AND D(1)='0' AND D(0)='0')THEN Y<="01111111";ELSIF (D(2)='0' AND D(1)='0' AND D(0)='1')THEN Y<="10111111";ELSIF (D(2)='0' AND D(1)='1' AND D(0)='0')THEN Y<="11011111";ELSIF (D(2)='0' AND D(1)='1' AND D(0)='1')THEN Y<="11101111";ELSIF (D(2)='1' AND D(1)='0' AND D(0)='0')THEN Y<="11110111";ELSIF (D(2)='1' AND D(1)='0' AND D(0)='1')THEN Y<="11111011";ELSIF (D(2)='1' AND D(1)='1' AND D(0)='0')THEN Y<="11111101";ELSIF (D(2)='1' AND D(1)='1' AND D(0)='1')THEN Y<="11111110";ELSE Y<="ZZZZZZZZ";END IF;ELSE Y<="ZZZZZZZZ";END IF;END PROCESS;END;四、实验仿真波形截图实验原理图:仿真波形图:。
初识EDA--3三八译码器(下)
5-14
进入引脚分配界面
首先将要分配管脚的信号放置在To下方。双击To下方的 《New》,如图5-14所示则会出现如图5-15所示界面。
5-15
信号选择对话框
选择Node Finder…进入如图5-16所示的Node Finder对话框界面。 按图5-16中样例设置参数。在Filter窗口选择Pins:all,在Named窗 口中输入“*”,点击List在Nodes Found窗口出现所有信号的名称, 点击中间的 按钮则Selected Nodes窗口下方出现被选择的端口 名称。
5)如果软件已运行一个工程,则在打开编程器的时候,编程器 窗口会自动出现这个工程文件要加载到目标器件的文件,如果要加 载其它文件可以从其它地方进行添加更改。选好加载文件后,再点 选Progam/Configure,编程模式选取JTAG模式,点击STRAT进 行文件加载,直到加载进度变为100%,文件成功加载完成。 6)手动控制实验箱上的K1、K2、K3即可观察到实验结果
步骤一:在Assignment Name栏内双击后,在下拉菜单中选中Location (Accepts wildcards/groups)选项
步骤二:在Value栏下填入实验箱管脚121,注意各实验箱对应的管脚也不同, 也可选择该实验箱上其他任意不同的管脚
步骤三:管脚填写完毕后,字体颜色自动变黑,则填写正确 5-18 给A端口进行管脚分配
器件EP1C6Q240C8进行加载的方法。
在程序加载之前,注意,一定要先完成管脚的分配和 定义,然后将管脚分配的文件保存,让 图标上方的*消失后,再进行编译,编译正确无误之后, 才可以进行程序下载!
1)将实验箱插上电源插头。 2)使用USB下载电缆插入USB-Blaster端口中,用手轻轻握住 USB-Blaster 连接盒,注意在没有下载完成前不要轻易放下,以免 连接盒磕碰后造成USB指示灯熄灭。观察连接盒上中间的USB指示 灯点亮后,则可进入到下一步设置。若不亮则需要重新拔出下载电 缆,再重新操作,直至USB指示灯点亮。 3)选择QUARTUSII软件的Tool>Programmer命令,弹出编 程器窗口,无论图中的No Hardware项,是否曾经设置,都需要 对其进行重新设置,如图5-32所示。
3-8译码器 EDA 仿真
项目题目: 3-8译码器的设计姓名:院系:应用技术学院专业:电子信息工程(仪器)学号:指导教师:综合成绩:完成时间: 2011 年5月 3 日一、 项目实验内容摘要(1)实验目的1、 通过一个简单的 3-8译码器的设计,掌握组合逻辑电路的设计方法。
2、 掌握组合逻辑电路的静态测试方法。
3、 初步掌握QUARTUS Ⅱ原理图输入方法设计的全过程。
(2) 实验的硬件要求:1、 输入:DIP 拨码开关3位。
2、输出:LED 灯。
3、主芯片:EP1K1OTC100-3。
(3) 实验原理:三-八译码器为三输入,八输出。
当输入信号按二进制方式的表示值为N 时(输入端低电平有效),输出端从零到八记,标号为N 输出端输出低电平表示有信号产生,而其它则为高电平表示无信号产生。
因为三个输入端能产生的组合状态有八种,所以输出端在每种组合中仅有一位为低电平的情况下,能表示所有的输入组合,因此不需要像编码器实验那样再用一个输出端指示输出是否有效。
但可以在输入中加入一个输出使能端,用来指示是否将当前的输入进行有效的译码,当使能端指示输入信号无效或不用对当前信号进行译码时,输出端全为高电平,表示无任何信号。
本例设计中没有考虑使能端,自己设计时可以考虑加入使能输入端时,程序如何设计。
三-八译码器真值表:三八译码器逻辑函数表达式如下:1270126012501240123012201210120...................................................................A A A Y A A A Y A A A Y A A A Y A A A Y A A A Y A A A Y A A A Y ========二、项目实验项目源代码Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;Entity three_eight isPort(a,b,c:in std_logic;D0,d1,d2,d3,d4,d5,d6,d7:out std_logic);End three_eight;Architecture s_b of three_eight isSignal O_11, O_22, O_33:std_logic; --注“O”为字母O,不是数字0。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity clk_div is
port(clk:in std_logic;
clk_div:out std_logic);
end clk_div;
architecture rt1 of clk_div is
signal q_temp:integer range 0 to 5999999;
begin
process(clk)
begin
if(clk'event and clk='1') then
if(q_temp=5999999) then
q_temp<=0;
else
q_temp<=q_temp+1;
end if;
end if;
end process;
process(clk)
begin
if(clk'event and clk='1') then
if(q_temp=5999999) then
clk_div<='1';
else
clk_div<='0';
end if;
end if;
end process;
end rt1;
library ieee;
use ieee.std_logic_1164.all;
entity seg7 is
port(q: in std_logic_vector(3 downto 0);
segment: out std_logic_vector(0 to 7));
end seg7;
architecture rt1 of seg7 is
begin
process(q)
begin
case q is
when "0000"=> segment <="11000000";
when "0001"=> segment <="11111001";
when "0010"=> segment <="10100100";
when "0011"=> segment <="10110000";
when "0100"=> segment <="10011001";
when "0101"=> segment <="10010010";
when "0110"=> segment <="10000010";
when "0111"=> segment <="11011000";
when "1000"=> segment <="10000000";
when "1001"=> segment <="10010000";
when others=> segment <="XXXXXXXX";
end case;
end process;
end rt1;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity count3081 is
port(
enable:in std_logic;
clk0:in std_logic;
q1:out std_logic_vector(3 downto 0);
q2:out std_logic_vector(3 downto 0);
q3:out std_logic_vector(3 downto 0);
q4:out std_logic_vector(3 downto 0));
end count3081;
architecture rt1 of count3081 is
signal q1_temp,q2_temp,q3_temp,q4_temp:std_logic_vector(3 downto 0);
begin
process(clk0)
begin
if(clk0'event and clk0='1')then
if(enable='1')then
if(q4_temp="0011" and q3_temp="0000" and q2_temp="1000" and q1_temp="0001") then
q1_temp<="0000";
q2_temp<="0000";
q3_temp<="0000";
q4_temp<="0000";
else
if(q1_temp="1001")then
q1_temp<="0000";
q2_temp<=q2_temp+1;
else
q1_temp<=q1_temp+1;
if(q2_temp="1001")then
q2_temp<="0000";
q3_temp<=q3_temp+1;
else
q2_temp<=q2_temp+1;
if(q3_temp="1001")then
q3_temp<="0000";
q4_temp<=q4_temp+1;
else
q3_temp<=q3_temp+1;
if(q4_temp="0011")then
q4_temp<="0000";
end if;
end if;
end if;
end if;
end if;
end if;
end if;
q1<=q1_temp;
q2<=q2_temp;
q3<=q3_temp;
q4<=q4_temp;
end process;
end rt1;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity ch30 is
port(clk:in std_logic;
enable:in std_logic;
segment1:out std_logic_vector(0 to 7);
segment2:out std_logic_vector(0 to 7);
segment3:out std_logic_vector(0 to 7);
segment4:out std_logic_vector(0 to 7)
);
end ch30;
architecture rt1 of ch30 is
component clk_div
port(clk:in std_logic;
clk_div:out std_logic);
end component;
component count3081
port(
enable:in std_logic;
clk0:in std_logic;
q1:out std_logic_vector(3 downto 0);
q2:out std_logic_vector(3 downto 0);
q3:out std_logic_vector(3 downto 0);
q4:out std_logic_vector(3 downto 0));
end component;
component seg7
port(q: in std_logic_vector(3 downto 0); segment: out std_logic_vector(0 to 7));
end component;
signal x:std_logic;
signal q1:std_logic_vector(3 downto 0);
signal q2:std_logic_vector(3 downto 0);
signal q3:std_logic_vector(3 downto 0);
signal q4:std_logic_vector(3 downto 0);
begin
U0:clk_div port map(clk,x);
U1:count3081 port map(enable,x,q1,q2,q3,q4);
U2:seg7 port map(q1,segment1);
U3:seg7 port map(q2,segment2);
U4:seg7 port map(q3,segment3);
U5:seg7 port map(q4,segment4);
end;。