用VHDL设计三八译码器。。超赞版
VHDL实验二 3×8译码器的设计
1、3×8译码器的设计LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decode_3to8 ISPORT(A0,A1,A2,EN:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END decode_3to8;ARCHITECTURE rtl OF decode_3to8 ISSIGNAL indata:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINindata<=A0&A1&A2;PROCESS(indata,EN)BEGINIF(EN='1')THENCASE indata ISWHEN "000"=>Y<="10000000";WHEN "001"=>Y<="01000000";WHEN "010"=>Y<="00100000";WHEN "011"=>Y<="00010000";WHEN "100"=>Y<="00001000";WHEN "101"=>Y<="00000100";WHEN "110"=>Y<="00000010";WHEN "111"=>Y<="00000001";WHEN OTHERS=>Y<="XXXXXXXX";END CASE;ELSEY<="00000000";END IF;END PROCESS;END rtl;2、用构造体的结构描述方式实现如图所示组合逻辑电路,仿真其功能并进行功能描述。
3-8译码器的VHDL设计
3-8译码器的VHDL设计1.实体框图2.程序设计正确的程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY DECODER38A ISPORT(A2,A1,A0,S1,S2,S3:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END ENTITY DECODER38A;ARCHITECTURE ONE OF DECODER38A ISSIGNAL S: STD_LOGIC_VECTOR(5 DOWNTO 0);BEGINS<=A2&A1&A0&S1&S2&S3;WITH S SELECTY<="11111110" WHEN "000100","11111101" WHEN "001100","11111011" WHEN "010100","11110111" WHEN "011100","11101111" WHEN "100100","11011111" WHEN "101100","10111111" WHEN "110100","01111111" WHEN "111100","11111111" WHEN OTHERS;END ARCHITECTURE ONE;3.仿真波形图4.仿真波形分析当S1 S2 S3=100时,只有当A2 A1 A0=111时,Y[7]才输出低电平,否则为高电平,当A2 A1 A0=110时,Y[6]才输出低电平,否则为高电平,当A2 A1 A0=101时,Y[5]才输出低电平,否则为高电平,Y[4]到Y[0]同理。
EDA实验一3-8译码器的设计
图 2-3 New Project Wizard 窗口 2. 点击 next,在出现的对话框中输入如下项目信息:
a. 项目路径,如:D:\EDA experiment\decoder38; b.项目名称,如:decoder38。如图 2-4 所示:
图 2-4 项目路径和项目名称对话框 3. 点击 2 次 next 后,出现如图 2-5 所示的对话框:
LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY decoder38_tb IS END decoder38_tb; ARCHITECTURE Behavior OF decoder38_tb IS 验中发现的问题: 1、程序代码输入后,但是编译有错误,经检查后发现在该语句 Y: OUT
STD_LOGIC_VECTOR(7 DOWNTO 0))中最后有两个括号,但是因为马虎, 少输入一个括号导致编译错误; 2、修改上面的错误后编译,仍然出现错误,多次检查后未发现错误, 询问老师后得知需要改一个文本文件中的代码,修改完毕编译,错误 得以解决,程序正常运行; 3、没有采用实验报告册的测试程序,而是经老师帮助直接运用了工 具栏中的仿真软件进行仿真的,但是仿真过程不大熟悉,先是没有找
a.Device family 中选择 Cyclone IV E; b.Available devices 中选择 EP4CE115F29C7.
图 2-5 器件选择窗口 4. 点击 next 后,出现 EDA 工具设置对话框。在 Simulation 一行中,Tool Name 选择
ModelSim-Altera,Fomat(s)选择 VHDL,如图 2-6 所示。
图 2-19 三八译码器仿真结果
20. 分配管脚:在 Quartus II 界面下,点击 Processing->Start->Start Analysis & Elaboration, 在弹出的对话框中点击 ok。 21. 点击 Assignments->Pin Planner,打开 Pin Planner 对话框,如图 2-20 所示。
用多种方法描述3_8译码器
《在VHDL中用多种方法描述3线-8线译码器》沈明山2011-01-033_8译码器元件符号:addres[2..0]: 地址信号线3根;sta: 选择信号,高电平有效;stbn: 选择信号,低电平有效;stcn:选择信号,低电平有效;yout[7..0]: 译码器输出信号,8位,每位的输出低电平有效。
功能表:同74LS138相同。
一、条件信号赋值语句法。
1、条件信号赋值语句格式沈明山《EDA技术及可编程器件应用实训》科学出版社2004年10月第1版p185;王传新《FPGA设计基础》高等教育出版社2007年9月第1版P742、文本范例:decoder3_8_1.vhdLIBRARY ieee;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder3_8_1 ISPORT(addres : IN STD_LOGIC_VECTOR(2 downto 0);sta, stbn, stcn: IN STD_LOGIC;yout : OUT STD_LOGIC_VECTOR(7 downto 0));END decoder3_8_1;ARCHITECTURE a OF decoder3_8_1 ISSIGNAL ytemp : STD_LOGIC_vector(7 downto 0);SIGNAL st_temp : STD_LOGIC_vector(2 downto 0);BEGINst_temp<= sta&stbn&stcn;ytemp<="11111110" WHEN (addres="000") ELSE"11111101" WHEN (addres="001") ELSE"11111011" WHEN (addres="010") ELSE"11110111" WHEN (addres="011") ELSE"11101111" WHEN (addres="100") ELSE"11011111" WHEN (addres="101") ELSE"10111111" WHEN (addres="110") ELSE"01111111" WHEN (addres="111") ;yout<=ytemp WHEN (st_temp="100")ELSE "11111111";END a; --3_8译码器的设计方法1条件信号赋值语句法3、仿真波形图二、选择信号赋值语句法1、选择信号赋值语句格式沈明山《EDA技术及可编程器件应用实训》科学出版社2004年10月第1版p185;王传新《FPGA设计基础》高等教育出版社2007年9月第1版P742、文本范例:decoder3_8_2.vhdLIBRARY ieee;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder3_8_2 ISPORT(addres : IN STD_LOGIC_VECTOR(2 downto 0);sta,stbn,stcn: IN STD_LOGIC;yout : OUT STD_LOGIC_VECTOR(7 downto 0));END decoder3_8_2;ARCHITECTURE a OF decoder3_8_2 ISSIGNAL ytemp : STD_LOGIC_vector(7 downto 0);SIGNAL st_temp : STD_LOGIC_vector(2 downto 0);BEGINst_temp<= sta&stbn&stcn;WITH addres SELECTytemp<="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; --必须加此句,以便对U、Z等情况做出限定yout<=ytemp WHEN (st_temp="100")ELSE "11111111";END a; --3_8译码器的设计方法2:选择信号赋值法。
用VHDL设计三八译码器。。超赞版
3-8译码器的设计1 设计目的与要求随着社会的进一步发展,我们的生活各个地方都需要计算机的参与,有了计算机,我们的生活有了很大的便利,很多事情都不需要我们人为的参与了,只需要通过计算机就可以实现自动控制。
由此,计算机对我们的社会对我们每个人都是很重要的。
所以我们要了解计算机得组成,内部各种硬件,只有了解了计算机基本器件已经相应的软件,才能促进社会的发展。
编码器和译码器的设计是计算机的一些很基础的知识,通过本次对于编码器和译码器的设计,可以让我知道究竟这种设计是如何实现的,这种设计对我们的生活有什么帮助,这种设计可以用到我们生活的哪些方面,对我们的各种生活有什么重大的意义。
1.1 设计的目的本次设计的目的是通过简单的译码器的设计掌握基本的计算机的一些有关的知识,通过查资料已经自己的动手设计去掌握EDA技术的基本原理已经设计方法,并掌握VHDL硬件描述语言的设计方法和思想。
以计算机组成原理为指导,通过将理论知识,各种原理方法与实际结合起来,切实的亲手设计,才能掌握这些非常有用的知识。
通过对编码器和译码器的设计,巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。
也能通过这种自主设计,增强自己的动手能力,将理论知识切实应用的能力,这对我们将来的发展是很有帮助的。
1.2 设计要求根据计算机组成原理中组合逻辑电路设计的原理,利用VHDL设计计算机电路中译码器的各个模块,并使用EDA 工具对各模块进行仿真验证和分析。
译码器由三-八译码器为实例代表。
关键词:输入、输出、译码2 VHDL的简单介绍2.1 VHDL的简介VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。
目前,它在我过的应用多数是用在FPGA/CPLD/EPLD的设计中。
三八译码器
实验三三-八译码器的设计(文本输入方式)[实验目的]1.学习设计一个3/8译码器,并在实验板上验证;2.学习使用VHDL语言进行逻辑设计输入;3.学习设计仿真工具的使用方法;[实验说明]通过实验一的学习同学已基本掌握了软件设计、下载测试的过程,接下来我们将采用VHDL语言设计方法实现3/8译码器的设计和下载验证。
真值表该3/8译码器除了译码输入:A、B、C以外,另加一个输入信号:ENA;ENA输入信号正常时为高电平,当ENA为低电平时,无论A、B、C输入信号为何值,输出Y0…Y7均为高电平“1”。
电路逻辑功能实现后,可将该逻辑功能下载到FPGA中。
注意选择:输入信号线4根(接拨码开关)、输出线8根(接发光二极管指示灯);测试时根据输入信号的变化观察输出信号的改变。
[实验要求]1用VHDL语言实现3/8译码器2设计仿真文件,进行软件验证3通过下载线下载到实验板上进行验证[实验报告要求]1写出VHDL编程语言源文件2给出软件仿真和硬件测试结果3通过下载线下载到实验板上进行验证4写出学习总结library IEEE;use IEEE.std_logic_1164.all;entity seg38 isport (data_in : in std_logic_vector (2 downto 0);ENA : in std_logic;data_out : out std_logic_vector (7 downto 0) );end entity;architecture seg38_arch of seg38 isbeginprocess(data_in, ENA)beginif ENA='1' thencase data_in iswhen "000" => data_out <= "11111110"; -- 0when "001" => data_out <= "11111101"; -- 1when "010" => data_out <= "11111011"; -- 2when "011" => data_out <= "11110111"; -- 3when "100" => data_out <= "11101111"; -- 4when "101" => data_out <= "11011111"; -- 5when "110" => data_out <= "10111111"; -- 6when "111" => data_out <= "01111111"; -- 7when others => NULL;end case;end if;end process;end architecture;管脚说明:ABC 分别对应data_2,1,0,锁定为:29,30,31 输出Y0-Y7非别对应data_out0-7,锁定为:灯1到8实验五BCD/七段显示译码器实验(文本输入方式)[实验目的]1.学习设计一个BCD/七段显示译码器,并在实验板上验证;2.掌握使用VHDL语言进行逻辑设计输入;3.掌握设计仿真工具的使用方法;[实验说明],C,D、ENA共5根,信号ENA的功能与3/8译码器功能相同,7段译码器的逻辑表同学自行设计,要求实现功能为:输入“0…15 ”(二进制),输出“0…9…F ”(显示数码),输出结果应在数码管上显示出来。
VHDL实验_3×8译码器的设计
实验一3-8译码器设计实验目的:掌握3-8译码器的设计方法;掌握if else语句和case语句的使用方法;掌握VHDL电路的设计,仿真和硬件测试方法设计描述:端口描述:输入变量为A,B,C,输出变量有8个,即Y0-Y7.G1,G2A,G2B为选通输入,仅当G1=1,G2A=0,G2B=0时,译码器能正确工作,否则,译码器输出无效,即Y0-Y7均为高电平。
真值表:编译的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY shiyan1 ISPORT(A : IN STD_LOGIC_vector(2 downto 0);G1,G2A,G2B:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END shiyan1;ARCHITECTURE yimaqi OF shiyan1 ISSIGNAL S : STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINS<=G1&G2A&G2B;PROCESS(A,S)BEGINIF(S="100")THENCASE 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 "111"=>Y<="01111111";WHEN OTHERS=>Y<="11111111";END CASE;END IF;END PROCESS;END ARCHITECTURE yimaqi;时序仿真图RTL电路图分析:3-8译码器有3个使能端,3个地址输入端,8个输出端,则在实体中定义三个地址输入端口A2、A1、A0;三个使能输入端口G1、G2A、G2B及八个输出端口Y7~Y0。
三八译码器=============
实验2 3/8译码器实验一、实验目的1.设计一个3/8译码器;2.学习用VHDL进行逻辑描述;3.学习设计仿真工具的使用方法。
二、实验说明本实验实现一个3/8译码器。
其逻辑功能如表7.1所示。
表7.1 3/8译码器的逻辑功能表实验仍利用拨动开关和发光二极管进行信号输入和显示。
实验板上的开关和发光二极管的管脚分布见实验板说明。
本实验练习用VHDL语言描述并仿真译码器。
要求编写3/8译码器的VHDL设计文件。
注意VHDL文件的结构和语法,并掌握MAX+plusⅡ平台中文本编辑器的使用方法。
三、实验要求1.要求用VHDL编写3/8译码器;2.设计输入波形文件,并进行模块的功能仿真;3.编程并实验验证;四、总结报告要求1.写出VHDL文件;2.写出测试向量文件;3.写出仿真和测试结果。
附3:实现3/8译码器LIBRARY IEEE;--库使用说明USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yima38 isPORT(A:IN STD_LOGIC_VECTOR(2 DOWNTO 0);--输入端口Y:OUT STD_LOGIC_VECTOR(7 downto 0));--输出端口END;ARCHITECTURE BEHA VIOR OF yima38 ISBEGINWITH A SELECT --译码:并行语句实现Y<=“11111110”WHEN“000”,“11111101”WHEN“001”,“11111011”WHEN“010”,“11110111”WHEN“011”,“11101111”WHEN“100”,“11011111”WHEN“101”,“10111111”WHEN“110”,“01111111”WHEN“111”,“00000000”WHEN OTHERS;END BEHA VIOR;。
实验三 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.延时分析。
(两种方法)。
3-8译码器VHDL设计实验 实验报告
3-8译码器VHDL设计实验报告一、设计原理:先判断使能端口EN状态,当其满足高电平时,判断三个输入端口A2,A1,A0的状态来决定输出。
若使能端口为低电平则固定输出不受逻辑输出A2,A1,A0的影响。
使能有效时按照三个输入状态决定八个输出的状态。
真值表: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 0 1 0 0 0 0 0 01 1 1 1 0 0 0 0 0 0 0二、实验程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY demo ISPORT(A:IN STD_LOGIC_VECTOR(2 DOWNTO 0);EN:IN STD_LOGIC;Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END demo;ARCHITECTURE DEC_BEHAVE OF demo ISSIGNAL SEL:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINSEL(0)<=EN;SEL(1)<=A(0);SEL(2)<=A(1);SEL(3)<=A(2);WITH SEL SELECTY<= "00000001" WHEN "0001","00000010" WHEN "0011","00000100" WHEN "0101","00001000" WHEN "0111","00010000" WHEN "1001","00100000" WHEN "1011","01000000" WHEN "1101","10000000" WHEN "1111","11111111" WHEN OTHERS;END DEC_BEHAVE;三、实验步骤(一)、设计输入1 、创建新工程(1) 打开QuartusII软件,在主界面中执行FILE—>New project Wizard(2) 在向导的第一页设置工程文件夹,工程名称及顶层实体名称。
EDA技术VHDL语语言编写译码器
《EDA技术》课程实验报告学生姓名:郑月庭所在班级:电信1001班指导教师:高金定老师记分及评价:一、实验名称实验3-8译码器器的设计二、任务及要求【基本部分】5分1、在QuartusII平台上,采用VHDL语言输入设计方法,完成一个3-8线译码器的设计,并进行时序仿真。
2、要求具备正确的译码功能。
3、设计完成后生成一个元件,以供更高层次的设计调用。
4、实验箱上选择恰当的模式进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。
三、实验程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YMQ ISPORT(A, B, C:IN STD_LOGIC;Y:OUT BIT_VECTOR(7 DOWNTO 0));END ENTITY YMQ;ARCHITECTURE ART1 OF YMQ ISSIGNAL SR: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINSR<=C&B&A;PROCESS(SR)ISBEGINCASE SR 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 ARCHITECTURE ART1;四、仿真及结果分析五、硬件验证1、选择模式:模式52、引脚锁定情况表:六、小结在这次实验中,我学到很多东西,加强了我的动手能力,并且培养了我的独立思考能力。
实验三83优先编码器和38线译码器
实验三8-3优先编码器和3-8线译码器一、实验目的1、熟悉常用编码器,译码器的功能逻辑。
2、熟悉VHDL的代码编写方法。
3、掌握复杂译码器的设计方法。
二、实验原理2、逻辑表达式:Y2=X4&X5&X6&X7Y1=~(~(X2)&X4&X5|~(X3)&X4&X5|~(X6)|~(X7));Y0=~(~(X1)&x2&X4&X6|~(X3)&X4&X6|~(X5)&X6|~(X7));2、3-8线码器总体思路以EP2C5中的三个拨位开关,SW3,SW2,SW1为三个输入信号,可以代表8种不同的状态,该译码器对这8种状态译码,并把所译码的结果在七段LED数码管上显示出来。
三、实验连线1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到SOPC下载的一边2、请将JPLED1短路帽右插,JPLED的短路帽全部上插。
3、请将JP103的短路帽全部插上。
四、实验步骤及波形按照步骤三正确连线,参考实验二步骤,完成项目的建立,文件的命名,文件的编辑,语法检查,引脚分配,编译,下载。
8-3优先编码器参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY encode ISPORT(XINA :IN STD_LOGIC_VECTOR(7 DOWNTO 0);Y0,Y1,Y2: OUT STD_LOGIC;OUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);LEDW: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END encode;ARCHITECTURE ADO OF encode ISSIGNAL LED: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL XIN: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINXIN<=XINA;LEDW<="000";PROCESS (XIN)BEGINCASE XIN ISWHEN x"00" => OUTA<=x"3F";WHEN x"01" => OUTA<=x"06";WHEN x"02" => OUTA<=x"5B";WHEN x"04" => OUTA<=x"4F";WHEN x"08" => OUTA<=x"66";WHEN x"10" => OUTA<=x"6D";WHEN x"20" => OUTA<=x"7D";WHEN x"40" => OUTA<=x"07";WHEN x"80" => OUTA<=x"3F";WHEN OTHERS => OUTA<=x"3F";END CASE;END PROCESS;PROCESS (XIN)BEGINCASE XIN ISWHEN x"01" => LED<="001";WHEN x"02" => LED<="010";WHEN x"04" => LED<="011";WHEN x"08" => LED<="100";WHEN x"10" => LED<="101";WHEN x"20" => LED<="110";WHEN x"40" => LED<="111";WHEN x"80" => LED<="000";WHEN OTHERS => LED<="000";END CASE;END PROCESS;Y2<=LED(2);Y1<=LED(1);Y0<=LED(0);END ADO;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)V ARIABLE DIN: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINDIN:=DA TA_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;五、实验仿真8-3编码器引脚锁定如图:图5-1图5-2仿真波形如图:3-8译码器引脚锁定如图:图5-3波形如图:图5-4六、实验现象调试ok的EP2C5文件在文件夹decode中,可以直接调用。
译码器的VHDL设计
实验名称:译码器的VHDL设计二、用WHEN_ELSE语句编写具有使能端的3-8译码器1.实体框图2.程序设计①编译前的程序Entity Dec38A isport(s1,s2,s3:in bit;A2,A1,A0:in bit;Y:out bit_vector(7 downto 0));End Dec38A;Architecture two of Dec38A isBeginY<="11111110" when s1s2s3="100" and A2A1A0="000"else"11111101" when s1s2s3="100" and A2A1A0="001"else"11111011" when s1s2s3="100" and A2A1A0="010"else"11110111" when s1s2s3="100" and A2A1A0="011"else"11101111" when s1s2s3="100" and A2A1A0="100"else"11011111" when s1s2s3="100" and A2A1A0="101"else"10111111" when s1s2s3="100" and A2A1A0="110"else"01111111" when s1s2s3="100" and A2A1A0="111"else"11111111" ;End architecture two;②程序编译错误情况错误1:Error (10482): VHDL error at Dec38A.vhd(15): object "s1s2s3"is used but not declared错误2:Error (10482): VHDL error at Dec38A.vhd(15): object "A2A1A0"is used but not declared③正确的程序Entity Dec38A isport(s1,s2,s3:in bit;A2,A1,A0:in bit;Y:out bit_vector(7 downto 0));End Dec38A;Architecture two of Dec38A issignal s:bit_vector(1 to 3);signal A:bit_vector(2 downto 0);Begins<=s1 & s2 & s3;A<=A2 & A1 & A0;Y<="11111110" when s="100" and A="000" else"11111101" when s="100" and A="001" else"11111011" when s="100" and A="010" else"11110111" when s="100" and A="011" else"11101111" when s="100" and A="100" else"11011111" when s="100" and A="101" else"10111111" when s="100" and A="110" else"01111111" when s="100" and A="111" else"11111111" ;End architecture two;3.仿真波形图4.仿真波形分析S1、S2、S3是使能端,A0、A1、A2是选通端,Y7~Y0是输出端当S1、S2、S3为100时,译码器工作A="000"时,Y="11111110"A="001"时,Y= "11111101"A="010"时,Y="11111011"A="011"时,Y="11110111"A="100"时,Y="11101111"A="101"时,Y= "11011111"A="110"时,Y="10111111"A="111"时,Y= "01111111" ;使能端无效时为"11111111" ;二、用WHEN_ELSE语句实现驱动共阳极数码管七段显示译码器1.实体框图2.程序设计①编译前的程序Library ieee;Use ieee.std_logic_1164.all;Entity DD isport(A: in std_logic_vector(3 downto 0);DOUT:out std_logic_vector(6 downto 0));End DD;Architecture three of DD isBeginDOUT<="1111110" when A="0000" else"0110000" when A="0001" else"1101101" when A="0010" else"1111001" when A="0011" else"0110011" when A="0100" else"1011011" when A="0101" else"1011111" when A="0110" else"1110000" when A="0111" else"1111111" when A="1000" else"1111011" when A="1001" else"0000000" ;End architecture three;②程序编译错误情况错误:无3.仿真波形图4.仿真波形分析A为输入端,DOUT为输出端A="0000" 时,DOUT="1111110",显示0A="0001" 时,DOUT= "0110000",显示1A="0010" 时,DOUT= "1101101",显示2A="0011" 时,DOUT= "1111001",显示3A="0100" 时,DOUT="0110011",显示4A="0101" 时,DOUT= "1011011",显示5A="0110"时,DOUT= "1011111",显示6A="0111" 时,DOUT= "1110000",显示7A="1000"时,DOUT= "1111111",显示8A="1001" 时,DOUT= "1111011",显示9否则不满足要求时,输出"0000000",不显示;。
实验三--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.延时分析。
(两种方法)。
vhdl三八译码器
3-8线译码器的真值表(5分),并写出其VHDL程序3-8译码器的真值表en a2a1a0 y1 000 000000011 001 000000101 010 ********1 011 000010001 100 000100001 101 001000001 110 010000001 111 100000000 xxx 00000000程序:entity tri_eight isport(a: in std_logic_vector (2 downto 0);en: in std_logic;y: out std_logic_vector (7 downto 0));end tri_eight;architecture a of tri_eight issignal sel: std_logic_vector (3 downto 0);beginsel(0) <= a(0); sel(1) <= a(1); sel(2) <= a(2); sel(3) <= en; with sel selecty <= "00000001" when "1000","00000010" when "1001","00000100" when "1010","00001000" when "1011","00010000" when "1100","00100000" when "1101","01000000" when "1110","10000000" when "1111","00000000" when others; end a;3-8线译码器的VHDL程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY decoder_3_to_8 ISPORT (a,b,c,g1,g2a,g2b:IN STD_LOGIC;y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));END decoder_3_to_8;ARCHITECTURE rtl OF decoder_3_to_8 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 <= "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 "111" => y <= "01111111";WHEN OTHERS=> y <= "XXXXXXXX";END CASE;ELSEy <= "11111111";END IF;END PROCESS;END rtl;7、填写完成一个八-三编码器真值表,并写出VHDL源程序。
实验三 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.延时分析。
(两种方法)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3-8译码器的设计1 设计目的与要求随着社会的进一步发展,我们的生活各个地方都需要计算机的参与,有了计算机,我们的生活有了很大的便利,很多事情都不需要我们人为的参与了,只需要通过计算机就可以实现自动控制。
由此,计算机对我们的社会对我们每个人都是很重要的。
所以我们要了解计算机得组成,内部各种硬件,只有了解了计算机基本器件已经相应的软件,才能促进社会的发展。
编码器和译码器的设计是计算机的一些很基础的知识,通过本次对于编码器和译码器的设计,可以让我知道究竟这种设计是如何实现的,这种设计对我们的生活有什么帮助,这种设计可以用到我们生活的哪些方面,对我们的各种生活有什么重大的意义。
1.1 设计的目的本次设计的目的是通过简单的译码器的设计掌握基本的计算机的一些有关的知识,通过查资料已经自己的动手设计去掌握EDA技术的基本原理已经设计方法,并掌握VHDL硬件描述语言的设计方法和思想。
以计算机组成原理为指导,通过将理论知识,各种原理方法与实际结合起来,切实的亲手设计,才能掌握这些非常有用的知识。
通过对编码器和译码器的设计,巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。
也能通过这种自主设计,增强自己的动手能力,将理论知识切实应用的能力,这对我们将来的发展是很有帮助的。
1.2 设计要求根据计算机组成原理中组合逻辑电路设计的原理,利用VHDL设计计算机电路中译码器的各个模块,并使用EDA 工具对各模块进行仿真验证和分析。
译码器由三-八译码器为实例代表。
关键词:输入、输出、译码2 VHDL的简单介绍2.1 VHDL的简介VHDL语言是一种用于电路设计的高级语言。
它在80年代的后期出现。
最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。
VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。
目前,它在我过的应用多数是用在FPGA/CPLD/EPLD的设计中。
当然在一些实力较为雄厚的单位,它也被用来设计ASIC。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式、描述风格以及语法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
2.2 VHDL的特点1,功能强大,设计灵活:VHDL具有功能强大的语言结构,可以用简洁明确的源代码来描述复杂的逻辑控制。
它具有多层次的设计描述功能,层层细化,最后可直接生成电路级描述。
VHDL支持同步电路、异步电路和随机电路的设计,这是其他硬件描述语言所不能比拟的。
VHDL还支持各种设计方法,既支持自底向上的设计,又支持自顶向下的设计;既支持模块化设计,又支持层次化设计。
2,,支持广泛,易于修改:由于VHDL已经成为IEEE标准所规范的硬件描述语言,目前大多数EDA工具几乎都支持VHDL,这为VHDL的进一步推广和广泛应用奠定了基础。
在硬件电路设计过程中,主要的设计文件是用VHDL编写的源代码,因为VHDL易读和结构化,所以易于修改设计。
3,强大的硬件系统描述能力:VHDL具有多层次的设计描述功能,既可以描述系统级电路,又可以描述门级电路。
而描述既可以采用行为描述、寄存器传输描述或结构描述,也可以采用三者混合的混合级描述。
另外,VHDL支持惯性延迟和传输延迟,还可以准确地建立硬件电路模型。
VHDL支持预定义的和自定义的数据类型,给硬件描述带来较大的自由度,使设计人员能够方便地创建高层次的系统模型。
4,独立于器件的设计,与工艺无关:设计人员用VHDL进行设计时,不需要首先考虑选择完成设计的器件,就可以集中精力进行设计的优化。
当设计描述完成后,可以用多种不同的器件结构来实现其功能。
5.,很强的移植能力:VHDL是一种标准化的硬件描述语言,同一个设计描述可以被不同的工具所支持,使得设计描述的移植成为可能。
6,易于共享和复用:VHDL采用基于库(Library)的设计方法,可以建立各种可再次利用的模块。
这些模块可以预先设计或使用以前设计中的存档模块,将这些模块存放到库中,就可以在以后的设计中进行复用,可以使设计成果在设计人员之间进行交流和共享,减少硬件电路设计。
2.3 VHDL的设计步骤1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。
通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件。
2.使用编译工具编译源文件。
3.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)4.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式。
逻辑综合软件会生成.edf或.edif 的EDA工业标准文件。
5.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放PLD/FPGA内。
6.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。
(也叫后仿真)通常以上过程可以都在PLD/FPGA厂家提供的开发工具。
7.烧写器件3 译码器的原理二进制译码器的输入是一组二进制代码,输出是一组与输入代码一一对应的高、低电平信号。
对于三-八译码器来说,3位二进制共有8种状态,所以对应的输出有8种状态。
例如:对于二进制代码111来说,输出为。
对于二-四译码器来说,2位二进制共有4种状态,所以对应的输出有4种状态。
例如:对于二进制代码11来说,输出为1000。
4 三-八译码器的设计关于三-八译码器的工作框图如图所示译码器内部电路:3-8译码器引脚排列图:3-8译码器的功能表:无论从逻辑图还是功能表我们都可以看到3-8译码器的八个输出管脚,任何时刻要么全为高电平1—芯片处于不工作状态,要么只有一个为低电平0,其余7个输出管脚全为高电平1。
如果出现两个输出管脚在同一个时间为0的情况,说明该芯片已经损坏。
当附加控制门的输出为高电平(S=1)时,可由逻辑图写出由上式可以看出,在同一个时间又是这三个变量的全部最小项的译码输出,所以也把这种译码器叫做最小项译码器。
3-8译码器有三个附加的控制端、和。
当、时,输出为高电平(S=1),译码器处于工作状态。
否则,译码器被禁止,所有的输出端被封锁在高电平,如表1所示。
这三个控制端也叫做“片选”输入端,利用片选的作用可以将多篇连接起来以扩展译码器的功能。
带控制输入端的译码器又是一个完整的数据分配器。
电路中如果把作为“数据”输入端(在同一个时间),而将作为“地址”输入端,那么从送来的数据只能通过所指定的一根输出线送出去。
这就不难理解为什么把叫做地址输入了。
例如当=101时,门的输入端除了接至输出端的一个以外全是高电平,因此的数据以反码的形式从输出,而不会被送到其他任何一个输出端上。
三-八译码器由VHDL程序来实现,下面是其中一段VHDL关键代码使用WHEN-ELSE语句5 三-八译码器仿真三-八译码器由VHDL程序:使用WHEN-ELSE语句LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY yangdan_DECODER ISPORT(INP:IN STD_LOGIC_VECTOR(2 DOWNTO 0);OUTP:OUT BIT_VECTOR (7 DOWNTO 0));END yangdan_DECODER;ARCHITECTURE ART3 OF yangdan_DECODER ISBEGINOUTP(0)<='1' WHEN INP="000" ELSE '0';OUTP(1)<='1' WHEN INP="001" ELSE '0';OUTP(2)<='1' WHEN INP="010" ELSE '0';OUTP(3)<='1' WHEN INP="011" ELSE '0';OUTP(4)<='1' WHEN INP="100" ELSE '0';OUTP(5)<='1' WHEN INP="101" ELSE '0';OUTP(6)<='1' WHEN INP="110" ELSE '0';OUTP(7)<='1' WHEN INP="111" ELSE '0';END ART3;其仿真图如图所示:三-八译码器功能时序仿真图6 结果分析对其仿真图进行仿真分析:OUTP译码输出标志,INP为输入信号组,它由INP[2]-INP[0]三个二进制代码输入信号组成。
OUTP为输出信号组,它由OUTP[7]-OUTP[0]八个输出信号组成。
OUTP为1时候表示输出。
当输入为:111时,译码后为指定的状态,即输出,紧接着依次类推,当输入为:110时,输出输出01000000,当输入为101时,输出00100000,当输入为100时,输出00010000,输入011时,输出为00001000,输入为010时,输出00000100,输入为001时,输出00000010,输入为000时,输出为00000001。
7 心得体会我所选择的题目是译码器的设计,这些题目在以前基础强化训练的时候做过类似的题目,所以心里至少还是有点思路,不过本次课设我们所要用的是EDA以及VHDL等知识来达到本次设计的要求。
经过好几天努力的琢磨钻研,我终于知道了该做什么,心里有个大概的思路了,知道了究竟本次设计的目的与原理等等的,以及设计的大致步骤。
最后完成了我的设计任务——基于VHDL译码器的设计。
通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。
本次设计课不仅仅培养了我们实际操作能力,也培养了我们灵活运用课本知识,理论联系实际,独立自主的进行设计的能力。