可编程逻辑器件及eda技术实验报告_第1页
可编程逻辑器件及eda技术实验报告_第2页
可编程逻辑器件及eda技术实验报告_第3页
可编程逻辑器件及eda技术实验报告_第4页
可编程逻辑器件及eda技术实验报告_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

可编程逻辑器件及 EDA 技术实验报告一、组合逻辑电路设计数字逻辑电路按照逻辑功能的特点分为两类,一类是组合逻辑电路,简称为组合电路;另一类是时序逻辑电路,简称为时序电路。组合电路的特点是电路任意时刻输出状态只取决该时刻的输入状态,而与该时刻钱的电路状态无关。1、逻辑门电路设计实验原理:逻辑门电路包括基本逻辑门电路和符合逻辑门电路。VHDL 语言可以直接支持的逻辑运算符共有七种逻辑运算,它们是:NOT 逻辑非 AND 逻辑与NAND 逻辑与非 OR 逻辑或NOR 或非 XOR 异或XNOR 异或非实验内容:例 3-2 的参考程序:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee. std_logic_unsigned.all;entity example3_2 isport(a,b,c,d:in std_logic;f:out std_logic_vector(3 downto 0);end example3_2;architecture behavioral of example3_2 isbeginf(0) segment segment segment segment segment segment segment segment segment segment segment segment segment segment segment segment NULL ;END CASE ;END PROCESS ;END ;实验分析:当共阴极数码管的某一阳极接高电平时,相应的二极管发光,若要显示某字形,则使相应几段的二极管发光即可,所以共阴极数码管需要有输出高电平有效的译码器去驱动,而共阴极数码管则需要输出低电平有效的译码器去驱动。上面程序是一个能驱动共阳极数码管的 7 段译码器的 VHDL 程序。实验波形仿真如下:4、数据选择器设计数据选择器(multiplexer)是在地址选择信号的控制下,从多路输入数据中选择一路作为输出的逻辑电路,叫做多路开关,简称 MUX。实验原理:在可编程逻辑器件的设计中经常用数据选择器来实现课编程逻辑器件内部数据总线的连接。实验内容:例 3.7 试用 VHDL 设计 4 选 1 数据选择器。参考程序:Library ieee;Use ieee.std_logic_1164.all;Use ieee.std_logic_arith.all;Use ieee.std_logic_unsigned.all;Entity example3_7 isPort(d:in std_logic_vector(3 downto 0);a:in std_logic_vector(1 downto 0);e:in std_logic;f:out std_logic);end example3_7;architecture behavioral of example3_7 isbeginprocess(e,a,d)beginif e=0thencase a iswhen “00“ =ffffif a(6 downto 0)b(6 downto 0) then gtgtgtif a(6 downto 0)b(6 downto 0) then gtgta(i),bi=b(i),cin=carry(i),si=s(i),cio=carry(i+1);end generate gen;end behavioral;实验分析:8 位二进制加法器可以由 8 个全加器通过级联的方式构成。实验波形仿真图如下:二、时序逻辑电路设计根据逻辑电路功能,逻辑电路可分为组合逻辑电路和时序逻辑电路两大类。其特点是电路任意时刻的稳态输出仅取决于该时刻的输入信号,而与电路原来的状态无关。1、 常用触发器设计实验原理:触发器(flip-flop )是能存储一位二进制数的逻辑电路,是时序逻辑电路的基本单元电路。触发器具有两个稳定状态,用来表示逻辑状态或二进制数的 0 和 1。实验内容:例 3.14 试用 VHDL 设计一个 D 触发器。它参考程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all; ENTITY example3_14 ISPORT (CLK : IN STD_LOGIC ;D : IN STD_LOGIC ;Q : OUT STD_LOGIC );END ;ARCHITECTURE behavioral OF example3_14 ISBEGINPROCESS (CLK)BEGINIF CLKEVENT AND CLK = 1 THEN Q if t1 =1 thennext_stateif t2 =1 thennext_statenext_statenext_stateif high=1thennext_state if high=1thennext_stateif low=1thennext_state next_state = well_situated;end case;end process;end behavioral;电路结构图:实验波形仿真图:四、存储器设计存储器按其类型可分为只读存储器、随机存储器和顺序存储器。用可编程逻辑器件的逻辑资源和其内部的嵌入式存储器资源可以设计实现各种类型的存储器。1、 只读存储器(ROM)的设计实验原理:只读存储器(ROM )是一个非易失的存储器。在 FPGA 中嵌入式存储模块的随机存储器(RAM)结构,用 RAM 结构实现 ROM 是通过 FPGA 的配置过程实现的。FPGA 的综合系统设计的 ROM 中数据文件直接综合到配置数据文件中,每次 FPGA 在呗重新配置的同时也对 FPGA 内部编程为 ROM 的存储器资源进行初始化,这样就形成了实际意义上的 ROM。实验内容:例 3.25 试用 VHDL 设计一个 8*8 的 ROM。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;use std.textio.all;entity example3_25 isport(clk: in std_logic;rd: in std_logic;data: out std_logic_vector(7 downto 0);address: in std_logic_vector(3 downto 0);end example3_25;architecture behavioral of example3_25 istype romtype is array(0 to 15)of bit_vector(7 downto 0);impure function rom_function_name(rom_file_name: in string) return romtype isfile rom_file: text is in rom_file_name;variable line_name: line;variable rom_name: romtype;beginfor i in romtyperange loopreadline (rom_file, line_name);read (line_name, rom_name(i);end loop;return rom_name;end function;signal rom_name: romtype:=rom_function_name(“file_name.men“);beginprocess(clk)beginif clkevent and clk=1thenif rd=1then data= to_stdlogicvector(rom_name(conv_integer(address);end if;end if;end process;end behavioral;实验分析:用 VHDL 设计 ROM 主要需解决两个问题,一个是 ROM 的初始化问题;另一个是 ROM 的定义问题: ROM 的初始化是通过文件读出函数readline(rom_file,line_name)和 read(line_name,rom_val)从一个存储器初始化文件中读取 ROM 存储器内容是实现的。电路结构图:实验波形仿真图:2、 随机存储器(RAM)的设计实验原理:RAM 和 ROM 的主要区别在于 RAM 具有读和写两种操作模式,根据读写端口的不同形式,用 VHDL 描述的 RAM 可划分为单端口 RAM 和双端口RAM。实验内容:例 3.26 试用 VHDL 设计一个 8*1k 的 RAM。参考程序如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity example3_26 isport(din: in std_logic_vector(7 downto 0);clk,wr,rd: in std_logic;dout: out std_logic_vector(7 downto 0);address: in std_logic_vector(9 downto 0);end example3_26;architecture behavioral of example3_26 istype ramtype is array(0 to 1023)of std_logic_vector(7 downto 0);signal ram_name:ramtype;beginprocess(clk)beginif(clkevent and clk=1)thenif(wr=1)thenram_name(conv_integer(address)= din;elsif(rd=1)thendout= ram_name(conv_integer(address);end if;end if;end

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论