用VHDL设计三八译码器超赞版

合集下载

3-8译码器设计

3-8译码器设计

EDA实验报告
学院:专业:班级:
点击菜单项File->New Project Wizard 帮助新建工程。

参看图打开Wizard 之后,界面如2-3
5.选择设计所用器件。

由于本次实验没有使用开发板,故可先随意选择。

8.培养良好的文件布局。

Quartus II 默认把所有编译结果放在工程根目
2.2 使用VHDL完成硬件设计指定单独的编译结果文件目录
9.添加所需设计文件。

本次实验通过VHDL 来描述所设计的硬件,因此要添加VHDL 设计文件到工程文件中去。

74LS138 是常用的小规模集成电路芯片,用于译码。

它有
12.分析与综合。

点击菜单项Processing->start->Start Analysis &
13.全编译文件。

点击菜单项Processing->start compilation
15. Pins 菜单项执行之后,会出现一个引脚配置窗口。

参看图
为了将逻辑分配到 FPGA 外围引脚上,必须根据所用的 FPGA 型号配置输出引脚。

根据所提供的对应开发板指导手册,将 3-8 译码器的输入与输出分别配置到开发板的3 个选择开关(SW2,SW1,SW0)以及8 个LED (LEDR7-LEDR0)上。

16.全编译文件。

完成分配引脚后,点击菜单项Processing->start
18.之后的输出画面如图2-23 所示。

◆本实验指导结束Pins引脚配置窗口:。

VHDL实验二 3×8译码器的设计

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、用构造体的结构描述方式实现如图所示组合逻辑电路,仿真其功能并进行功能描述。

38译码器Verilog仿真与实现

38译码器Verilog仿真与实现

思考题解答
思考题:Verilog HDL语言设计一个3线8线译码器。

要求:首先定义一个3 输入与门;然后以3 输入与门为基础设计一个3线8线译码器。

解答
步骤一
建立Quartus工程,作业中选择了与Altera公司提供的DE1开发板相对应的FPGA器件型号,如下图:
步骤二
使用V erilog HDL完成硬件设计,设计代码如下:
调试结果如下图所示:
步骤三
引脚分配情况如下图:
步骤四
RTL视图如下所示:
步骤五
构建波形文件,testbench如下图所示:
步骤六
modelsim仿真波形如下图所示:
收获与心得体会
现代电子技术的核心是EDA技术。

它依靠功能强大的电子计算机,在自己的工具软件平台上,对以硬件描述语言(HDL)为系统逻辑描述手段完成设计的文件,自动地完成编辑、化简、分割、综合、优化、仿真,直至下载到可编辑逻辑器件CPDL/FPGA或者专用集成电路ASIC芯片中,实现既定的电子电路设计功能。

该项技术极大地提高了电子电路设计效率,缩短了设计周期,节省了设计成本。

本次思考题运用V erilog HDL的文本输入语言和设计功能,完成V erilog HDL 语言设计的3线-8线译码器设计。

在实现的过程中,通过对Quartus11.0软件的运用,对相关知识有了更深的认识。

相信在以后的不时练习后,我能充分的掌握该软件的使用方法和技巧。

VHDL实验_3×8译码器的设计

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。

VHDL38译码器

VHDL38译码器

Y<=(others=>’1’); if S=”100”thenEND;library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;entity dec3_8 isport (din : in std_logic_vector(2 downto 0) ;dout : out std_logic_vector(7 downto 0) ;);end dec3_8 ;architecture RTL of dec3_8 isbegindout <= "10000000" when ( din = "111" ) else"01000000" when ( din = "110" ) else"00100000" when ( din = "101" ) else"00010000" when ( din = "100" ) else"00001000" when ( din = "011" ) else"00000100" when ( din = "010" ) else"00000010" when ( din = "001" ) else"00000001" ;end RTL ;半加器半加器电路是指对两个输入数据位进行加法,输出一个结果位和进位,不产生进位输出的加法器电路。

是实现两个一位二进制数的加法运算电路。

数据输入A被加数、B加数,数据输出F和数(半加和)、进位C0。

A和B是相加的两个数,S是半加和数,C是进位数。

用VHDL设计三八译码器。。超赞版

用VHDL设计三八译码器。。超赞版

3-8译码器的设计1 设计目的与要求随着社会的进一步发展,我们的生活各个地方都需要计算机的参与,有了计算机,我们的生活有了很大的便利,很多事情都不需要我们人为的参与了,只需要通过计算机就可以实现自动控制。

由此,计算机对我们的社会对我们每个人都是很重要的。

所以我们要了解计算机得组成,内部各种硬件,只有了解了计算机基本器件已经相应的软件,才能促进社会的发展。

编码器和译码器的设计是计算机的一些很基础的知识,通过本次对于编码器和译码器的设计,可以让我知道究竟这种设计是如何实现的,这种设计对我们的生活有什么帮助,这种设计可以用到我们生活的哪些方面,对我们的各种生活有什么重大的意义。

1.1 设计的目的本次设计的目的是通过简单的译码器的设计掌握基本的计算机的一些有关的知识,通过查资料已经自己的动手设计去掌握EDA技术的基本原理已经设计方法,并掌握VHDL硬件描述语言的设计方法和思想。

以计算机组成原理为指导,通过将理论知识,各种原理方法与实际结合起来,切实的亲手设计,才能掌握这些非常有用的知识。

通过对编码器和译码器的设计,巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。

也能通过这种自主设计,增强自己的动手能力,将理论知识切实应用的能力,这对我们将来的发展是很有帮助的。

1.2 设计要求根据计算机组成原理中组合逻辑电路设计的原理,利用VHDL设计计算机电路中译码器的各个模块,并使用EDA 工具对各模块进行仿真验证和分析。

译码器由三-八译码器为实例代表。

关键词:输入、输出、译码2 VHDL的简单介绍2.1 VHDL的简介VHDL语言是一种用于电路设计的高级语言。

它在80年代的后期出现。

最初是由美国国防部开发出来供美军用来提高设计的可靠性和缩减开发周期的一种使用范围较小的设计语言。

VHDL翻译成中文就是超高速集成电路硬件描述语言,主要是应用在数字电路的设计中。

目前,它在我过的应用多数是用在FPGA/CPLD/EPLD的设计中。

3-8译码器VHDL设计实验 实验报告

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) 在向导的第一页设置工程文件夹,工程名称及顶层实体名称。

38译码器verilog代码_Verilog设计实例(2)一步一步实现一个多功能通用计数器

38译码器verilog代码_Verilog设计实例(2)一步一步实现一个多功能通用计数器

38译码器verilog代码_Verilog设计实例(2)⼀步⼀步实现⼀个多功能通⽤计数器写在前⾯博客⾸页 注:学习交流使⽤!相关博⽂相关博⽂ 博客⾸页正⽂多功能计数器,英⽂名为:多功能计数器;所谓多功能,这⾥包括⼆进制计数,格雷码计数以及线性反馈移位寄存器(LFSR)三种,本⽂Verilog设通过从普通的计数器开始,也就是单个功能的计数器开始,⼀步⼀步过渡到多功能计数器。

作为对以下相关博⽂的延伸练习: Verilog设FPGA设计⼼得(8)Verilog中的编译预处理语句计实例(1)线性反馈移位寄存器(LFSR) FPGA设计⼼得(8)Verilog中的编译预处理语句计实例(1)线性反馈移位寄存器(LFSR)普通的⼆进制计数器这个作为开头,不必多说,计数就完事了。

电路设计设计⽂件:`timescale 1ns/1ps//// Engineer: Reborn Lee// Module Name: binary counter// Additional Comments:////module binary_counter#(parameter N_BITS = 4)(input i_clk,input i_rst,output [N_BITS - 1 : 0] o_cnt,output o_cnt_done);reg [N_BITS - 1 : 0] bin_cnt = 0;always@(posedge i_clk) beginif(i_rst) beginbin_cnt <= 0;endelse beginbin_cnt <= bin_cnt + 1;endendassign o_cnt_done = (bin_cnt == 0)? 1:0;assign o_cnt = bin_cnt;endmodule⾏为仿真tb⽂件:`timescale 1ns/1psmodule bin_cnt_tb;parameter N_BITS = 4;reg i_clk;reg i_rst;wire [N_BITS - 1 : 0] o_cnt;wire o_cnt_done;initial begini_clk = 0;forever begin# 2 i_clk = ~ i_clk;endendinitial begini_rst = 1;# 8i_rst = 0;endbinary_counter #(.N_BITS(N_BITS))inst_bin_cnt(.i_rst(i_rst),.i_clk(i_clk),.o_cnt(o_cnt),.o_cnt_done(o_cnt_done));endmodule仿真图:普通的格雷码计数器任意位宽的格雷码计数器,实现的⽅式通常是设计⼀个普通的⼆进制计数器,同时将计数结果转化为格雷码。

3_8译码器VerilogHDL语言的简单实现

3_8译码器VerilogHDL语言的简单实现

3_8译码器VerilogHDL语⾔的简单实现最近在学Verilog HDL语⾔,觉得learn in doing是⽐较好的学习⽅式,所以我们来直接分析分析代码好了。

先来⼀波代码:1module q_decode_38(data_in,data_out);23input[2:0] data_in; //端⼝声明4output[7:0] data_out;5reg[7:0] data_out;67always@(data_in)8begin9case(data_in)103'd0:data_out = 8'b0000_0001;113'd1:data_out = 8'b0000_0010;123'd2:data_out = 8'b0000_0100;133'd3:data_out = 8'b0000_1000;143'd4:data_out = 8'b0001_0000;153'd5:data_out = 8'b0010_0000;163'd6:data_out = 8'b0100_0000;173'd7:data_out = 8'b1000_0000;18endcase19end2021endmodule代码分析如下:知识点:(1)基本语句1)条件语句---case语句case语句很明显了,格式跟c语⾔中的类似,不解释。

值得注意的是上述代码中是不是少了defaule这种情况呢?此处省略是因为已列出所有的情况,不过⼀般不提倡省略,因为若出现了未知情况,则很容易⽣成不必要的锁存器。

2)顺序块语句---begin...end语句begin...end语句没什么特殊要求,就是在顺序块begin...end之间的语句是从上⾄下、从左往右逐句执⾏的。

3)过程语句---always语句always语句的格式是always@() 后加begin...end语句,括号中为触发条件,上述代码中表⽰,只要data_in的值发⽣变化,就执⾏always后的begin...end部分,否则不执⾏。

3_8译码器的VHDL设计

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]同理。

项目3 3线-8线译码器设计

项目3 3线-8线译码器设计

项目三3线-8线译码器电路设计
班级:09电信姓名:朱丽丝学号:41
1.实训目标
1)通过3线-8线译码器的设计,让学生掌握组合逻辑电路的设计方法。

2)掌握译码器的设计原理。

3)掌握Altera MAX+PLUS II原理图输入设计和VHDL语言输入设计的全过程。

2.实训原理
3线-8线译码器的真值表见表3-1。

表3-1
3.实训步骤
1)利用原理图编辑法,在Mf函数的maxplus2里面调用74138器件(3线-8线译码
器),加入输入和输出引脚。

编程器件型号选择ACE1k系列的EP1K30TC144-3。

完成项目编辑及功能仿真。

2)采用文本编辑法,即利用VHDL语言描述3线-8线译码器,代码如下。

然后对其进行编译,编程器件型号选择ACE1k系列的EP1K30TC144-3,完成程序仿真,记录仿真数据。

4.实训数据
1)原理图编辑法设的3线-8线译码器的电路。

2)原理图编辑法仿真结果。

简述仿真波形的意义。

3)采用VHDL语言设计的3线-8线译码器的仿真结果。

简述仿真波形的意义。

5.思考题
根据BCD-7段显示译码器的真值表,见表4-2,用VHDL语言描述BCD-7段显示译码器。

进行编辑和仿真,写出设计的VHDL程序,并记录仿真数据。

vhdl三八译码器

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源程序。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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来说,输出为10000000。

对于二-四译码器来说,2位二进制共有4种状态,所以对应的输出有4种状态。

例如:对于二进制代码11来说,输出为1000。

4 三-八译码器的设计关于三-八译码器的工作框图如图所示译码器内部电路:3-8译码器引脚排列图:INP[2..0] OUTP[7..0]CS1YIMA_1383-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时,译码后为指定的状态,即输出10000000,紧接着依次类推,当输入为:110时,输出输出01000000,当输入为101时,输出00100000,当输入为100时,输出00010000,输入011时,输出为00001000,输入为010时,输出00000100,输入为001时,输出00000010,输入为000时,输出为00000001。

7 心得体会我所选择的题目是译码器的设计,这些题目在以前基础强化训练的时候做过类似的题目,所以心里至少还是有点思路,不过本次课设我们所要用的是EDA以及VHDL等知识来达到本次设计的要求。

经过好几天努力的琢磨钻研,我终于知道了该做什么,心里有个大概的思路了,知道了究竟本次设计的目的与原理等等的,以及设计的大致步骤。

最后完成了我的设计任务——基于VHDL译码器的设计。

通过本次课程设计的学习,我深深的体会到设计课的重要性和目的性所在。

相关文档
最新文档