VHDL实验报告与代码毕业设计(论文)word格式.doc_第1页
VHDL实验报告与代码毕业设计(论文)word格式.doc_第2页
VHDL实验报告与代码毕业设计(论文)word格式.doc_第3页
VHDL实验报告与代码毕业设计(论文)word格式.doc_第4页
VHDL实验报告与代码毕业设计(论文)word格式.doc_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

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

文档简介

实验一. 分频器设计一实验目的1.熟悉quartusii 软件的使用2.熟悉pld设计流程3. 学习分频器的设计二实验内容设计一个最大分频为225的分频器,将50mhz时钟作为输入三实验框图50mhz时钟输入计数器计数计数至时,clkout为反转四管脚设定clock_50pin_n2ledr0pin_ae23五实验代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity clk1 isport(clk:in std_logic;digit:out std_logic);end clk1;architecture clk1 of clk1 isbegincount: process(clk)variable temp:std_logic_vector(25 downto 0);beginif(clkevent and clk = 1)thentemp := temp+1;if(temp(25)=1) then temp:=(others=0);end if;end if;digit = temp(24);end process count;end clk1;六心得体会 通过这次实验,我初步掌握了quartusii 软件的使用,为今后的实验打下基础。实验二. vhdl描述风格比较一实验目的1.深入体会vhdl三种描述风格的区别2. 学习3输入表决器,异或门的实现3.设计一个5输入表决器。二实验内容以3输入表决器,异或门,通用寄存器等代码为例,深入体会vhdl描述风格。1. 学习已给的3输入表决器代码,完成3输入表决器的三种描述方式的验证比较。在quartus ii中对程序进行编译,下载,验证。使用拔码开关sw0,sw1,sw2作为三个输入,输出在ledr0表示,亮表示1,不亮表示02. 学习已给的异或门代码,完成异或门的三种描述方式的验证比较。在quartus ii中对程序进行编译,下载,验证。使用拔码开关sw0,sw1作为输入,输出在ledr0表示,亮表示1,不亮表示03. 通过对于以上的学习,设计一个5输入表决器。当输入有3个以上为1时,输出为1。使用拔码开关sw0,sw1,sw2,sw3,sw4作为三个输入,输出在ledr0表示,亮表示1,不亮表示0三实验框图5个按键输入计数器计数计数器大于2, 则输出1,否则输出0四管脚设定sw0pin_n25sw1pin_n26sw2pin_p25sw3pin_ae14 sw4pin_af14 ledr0pin_ae23五实验代码1)3输入表决器(行为描述)library ieee;use ieee.std_logic_1164.all;entity maj1 isport (a, b, c : in bit;m : out bit);end maj1;architecture using_table of maj1 isbeginprocess (a, b, c)constant lookuptable : bit_vector(0 to 7) := 00010111;variable index : natural;beginindex := 0; -index must be cleared each time process executesif a = 1 then index := index + 1; end if;if b = 1 then index := index + 2; end if;if c = 1 then index := index + 4; end if;m = lookuptable(index);end process;end using_table;2)3输入表决器(数据流描述)library ieee;use ieee.std_logic_1164.all;entity maj2 isport (a, b, c : in bit; m : out bit);end maj2;architecture concurrent of maj2 isbeginwith a&b&c selectm = 1 when 110|101|011|111,0 when others;end concurrent;3)3输入表决器(结构描述)library ieee;use ieee.std_logic_1164.all;entity maj3 isport (in1 : in bit ;in2 : in bit ;in3 : in bit ;out1 : out bit) ;end maj3;entity and_2 isport (a : in bit ;b : in bit ;c : out bit) ;end and_2;architecture behavior of and_2 isbeginprocess(a, b)beginc = a and b after 5 ns;end process;end behavior;entity or_3 isport (d : in bit ;e : in bit ;f : in bit ;g : out bit) ;end or_3;architecture behavior of or_3 isbeginprocess(d, e, f)beging in1, b = in2, c = t1);u1: and_2 port map ( a = in2, b = in3, c = t2);u2: and_2 port map ( a = in1, b = in3, c = t3);u3: or_3 port map ( d = t1, e = t2, f = t3, g = out1);end structural;4)异或门 (行为描述)library ieee;use ieee.std_logic_1164.all;entity x_or isport (in1 : in bit ;in2 : in bit ;out1 : out bit) ;end x_or;architecture behavior of x_or isbeginprocess(in1, in2)beginif in1 = in2 thenout1 = 0 after 10 ns;else out1 = 1 after 10 ns;end if;end process;end behavior;5)异或门(数据流描述)library ieee;use ieee.std_logic_1164.all;entity x_or2 isport (in1 : in bit ;in2 : in bit ;out1 : out bit);end x_or2;architecture rtl of x_or2 isbeginout1 = in1 xor in2 after 10 ns;end rtl;6)异或门 (结构描述)library ieee;use ieee.std_logic_1164.all;entity x_or3 isport (in1 : in bit ;in2 : in bit ;out1 :out bit) ;end x_or3;entity and_gate isport (a : in bit ;b : in bit ;c : out bit) ;end and_gate;architecture behavior of and_gate isbeginprocess(a, b)beginc = a and b after 5 ns;end process;end behavior;entity or_gate isport (d : in bit ;e : in bit ;f : out bit) ;end or_gate;architecture behavior of or_gate isbeginprocess(d, e)beginf = d or e after 4 ns;end process;end behavior;entity inverter isport (g : in bit ;h : out bit) ;end inverter;architecture behavior of inverter isbeginprocess(g)beginh t1, b = in2, c = t3);u1: and_gate port map ( a = in1, b = t2, c = t4);u2: inverter port map ( g = in1, h = t1);u3: inverter port map ( g = in2, h = t2);u4: or_gate port map ( d = t3, e = t4, f = out1);end structural;7)我设计的五人表决器library ieee;use ieee.std_logic_1164.all;entity maj2 isport (a, b, c : in bit; m : out bit);end maj2;architecture concurrent of maj2 isbeginwith a&b&c selectm 格雷码转换,置0时为格雷码二进制代码,同时使用ledr17显示sw17的值。b) 使用拨码开关sw3, sw2, sw1, sw0作为输入的被转换数,sw3为高位,sw0为低位。c) 使用ledr3,ledr2,ledr1,ledr0作为转换后的输出结果显示,ledr3为高位,ledr0为低位。三管脚设定sw0pin_n25sw1pin_n26sw2pin_p25sw3pin_ae14 sw17pin_v2ledr0pin_ae23ledr1pin_af23ledr2pin_ab21ledr3pin_ac22ledr17pin_ad12key3pin_w26clock_50pin_n2四实验框图 输入频率为50mhz的时钟将输入时钟进行分频, 判断拨码开关sw17是否为1否 是判断key3是否为0否 是 使输出为“0000”每逢一个时钟脉冲,输出加“1”判断key3是否为0否是使输出为“1111”每逢一个时钟脉冲,输出减“1”4位可逆二进制代码格雷码转换器:判断拨码开关sw17的状态 为1 为0进行二进制代码格雷码的转换进行格雷码二进制代码的转换五实验代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bg isport(choice: in std_logic;di: in std_logic_vector(3 downto 0);do: out std_logic_vector(3 downto 0);end bg;architecture bg of bg isbeginprocess(di,choice)beginif(choice=1)thendo (3)=di(3);do (2)=do (3) xor di(2);do (1)=do (2) xor di(1);do (0)=do(1) xor di(0);elsedo (3)=di(3);do (2)=di(3) xor di(2);do (1)=di(2) xor di(1);do (0)=di(1) xor di(0);end if;end process;end bg;library ieee;use ieee.std_logic_1164.all;entity segment isport (clk: in std_logic;key3: in std_logic;sw17: in std_logic;led17: out std_logic;out1 : out integer range 0 to 15);end segment;architecture seg of segment istype array3 is array(9 downto 0 )of std_logic_vector(6 downto 0);signal count : integer range 0 to 33554432;beginprocess(clk)beginif(clkevent and clk=1)thencount=count+1;if(sw17=1)thenled17=1;if(key3=1)thenout1=0;elseout1=15;end if;else led17=0;end if;if(count=33554432)thenif(sw17=1)thenout1=out1+1;elseout1=10)thenout2=1001111;elseout2=10)thenout1=lookuptable(in1-10);else out1=lookuptable(in1);end if;-for i in 6 to 0 loop-out1(i)=lookuptable(index,i);-end loop;end process;end seg;library ieee;use ieee.std_logic_1164.all;entity segment isport (clk: in std_logic;key17: in std_logic;led17: out std_logic;out1 : out std_logic_vector(6 downto 0);out2: out std_logic_vector(6 downto 0);end segment;architecture seg of segment istype array3 is array(9 downto 0 )of std_logic_vector(6 downto 0);signal in1 : integer range 0 to 15;signal count1 : integer range 0 to 33554432;beginprocess(clk)constant lookuptable :array3 := (0010000),(0000000),(1111000),(0000010),(0010010),(0011001),(0110000),(0100100),(1001111),(1000000);beginif(clkevent and clk=1)thencount1=count1+1;if(key17=1)thenled17=1;else led17=0;end if;if(count1=33554432)thenif(key17=1)thenin1=in1+1;elsein1=10)thenout2=1001111;elseout2=10)thenout1=lookuptable(in1-10);else out1=lookuptable(in1);end if;end if;end if;end process;end seg;五实验心得体会 本次实验要用到七段码的知识,所幸我们前面已接触了不少,这里马上想到了用查表的办法。除此之外,还要综合考虑定时,计数等。实验五. 状态机代码验证一实验目的以状态机的一些代码为例,熟悉状态机设计方法二实验内容以经典双进程状态机、使用变量的状态机、带异步清零的状态机、模式检测状态机、带摩尔和米立输出的状态机、摩尔型状态机、米立型状态机代码为例,熟悉各种状态机设计方法,体会它样的区别4. 学习已给的经典双进程状态机代码,画出状态转换图,编译,仿真。 5. 学习已给的使用变量的状态机代码,画出状态转换图,编译,仿真。6. 学习已给的带异步清零的状态机代码,画出状态转换图,编译,仿真。7. 学习已给的模式检测状态机代码,画出状态转换图,编译,仿真。8. 学习已给的带摩尔和米立输出的状态机代码,画出状态转换图,编译,仿真。9. 学习已给的摩尔型状态机代码,画出状态转换图,编译,仿真。10. 学习已给的米立型状态机代码,画出状态转换图,编译,仿真。三实验代码1)经典双进程状态机-mealy type state machine exampleentity fsm isport(clock, x : in bit; z : out bit);end fsm;-architecture behaviour of fsm istype state_type is (s0, s1, s2, s3);signal present_state, next_state : state_type;begin-state register processstate_reg: processbeginwait until clockevent and clock = 1;present_state if x = 0 then z = 0; next_state = s0;else z = 1; next_state if x = 0 then z = 0; next_state = s0;else z = 0; next_state if x = 0 then z = 1; next_state = s2;else z = 0; next_state if x = 0 then z = 0; next_state = s3;else z = 1; next_state if x = 1 thenst := s1;z = 0;elsest := s0;z if x = 0 thenst := s2;z = 0;elsest:= s1;z if x = 0 thenst := s0;z = 0;elsest := s3;z if x = 1 thenst := s4;z = 0;elsest := s2;z if x = 1 thenst := s1;z = 0;elsest := s5;z if x = 0 thenst := s0;z = 0;elsest := s1;z = 0;end if;end case;end process;end using_wait;五实验心得体会本次实验是基于试验五的基础上的。这种状态机的基本设计方法在数字电子技术课程中我们已有所接触,所以设计起来得心应手。运用vhdl课上学习的相关知识很容易就可以把状态机设计出来。实验七. 基于rom的正弦波发生器的设计一实验目的1. 学习vhdl的综合设计应用2. 学习基于rom的正弦波发生器的设计二实验内容设计基于rom的正弦波发生器,对其编译,仿真。具体要求:1.正弦发生器由波形数据存储模块(rom),波形发生器控制模块及锁存模块组成2.波形数据存储模块(rom)定制数据宽度为8,地址宽度为6,可存储 64点正弦波形数据,用matlab求出波形数据。3.将50mhz作为输入时钟。三实验框图输出波形发生器控制模块波形数据存储模块(rom)锁存模块clk四实验代码library ieee;use ieee.std_logic_1164.all;entity sine isport(clk : in std_logic; re : out std_logic_vector(6 downto 0);sign: out std_logic);end sine;architecture sin of sine istype array3 is array(15 downto 0)of std_logic_vector(6 downto 0);signal index : integer range 0 to 63;beginprocess(clk)constant lookuptable :array3 := (0000000),(0001100),(0011001),(0100101),(0110001),(0111100),(1000111),(1010001),(1011010),(1100011),(1101010),(1110001),(1110110),(1111010),(1111101),(1111111);beginif(clkevent and clk=1)thenindex63)then index=0 and index16)thenre=lookuptable(15-index);sign15 and index32)thenre=lookuptable(index-16);sign31 and index48)thenre=lookuptable(index-32);sign47 and index64)thenre=lookuptable(63-index);sign=1;end if;end if;end process;end sin;五实验心得体会设计正弦波发生器的时候,采样输出虽然说是一种办法,但获得采样值却颇费一番周转。之后又是输出的问题,上面参考的别人的输出是整数型的,在我的输出里,则是用一个7比特向量和代表正负的符号表征输出 实验八. 数字密码锁的设计与实现一实验目的1. 学习vhdl的综合设计应用2. 学习数字密码锁的设计二实验内容设计一个数字密码锁,对其编译,仿真,下载。数字密码锁具体要求如下:1.系统具有预置的初始密码“00000001”。2.输入密码与预存密码相同时,开锁成功,显示绿灯,否则开锁失败,显示红灯。3.具有修改密码功能。修改密码时,先开锁,开锁成功才可以修改。4.系统同时具有关锁功能。关锁后,显示红灯。5.密码由拔码开关表示,开锁由按键表示。6具有一个复位按键。按键后,回到初始状态。三管脚设定自行设定。四实验代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity proj isport(datain:in std_logic_vector(7 downto 0);clk_0,rst,modify,enter,lock:in std_logic;green,red:out std_logic);end;architecture behavior of proj istype state is(s0,s1,s2,s3);signal cnt:std_logic_vector(23 downto 0);beginprocess(clk_0)beginif clk_0event and clk_0=1 thencnt=cnt+1;end if;end process;process(rst,cnt(18),enter,modify)variable prestate:state:=s0;variable password:std_logic_vector(7 downto 0):=00000001;beginif(rst=0) thenprestate:=s0;password:=00000001;green = 1; red = 0; elsif(lock=0) thenprestate:=s0;green=0;redif datain=password thenprestate := s1;green = 1;red = 0; elseprestate := s2;green = 0; red -s1 is the success state if modify=0 then-change password prestate := s3; green = 1; red -s2 is the fail state if datain = password thenprestate := s1; green = 1; red = 0;elseprestate := s2; green = 0; red if enter=0 thenprestate:=s0;password := datain; else prestate:=s3;end if;end case; end if; end process;end; 五实验心得体会 这次实验是对前面知识的一次比较综合的应用。但是主要还是应用到了状态机的知识。设计的过程是十分有趣的,当然也参考了不少其他同学的想法。最后成功的做出密码锁确实令人相当开心。实验九. 数字频率计的设计一实验目的1. 学习vhdl的综合设计应用2. 学习数字频率计的设计二实验内容设计一个4位十进制数字频率计,对其编译,仿真,下载。具体要求:1.数字频率计的测量范围为09999hz。精度为1hz。2.输出结果用4个数码管显示。3.将50mhz分频后得到的一个在频率计范围内的频率,作为被测频率。验证频率计的设计是否正确。三设计提示频率计的工作原理是通过在1s内对外部信号进行计数,计数值就是输入信号的频率。系统可由被测频率发生器,频率计,数码显示三个部分组成。1. 被测频率发生器由50mhz分频后得到。2.频率计频率计部分是本系统的重点。可以计数控制信号发生器、4个十进制计数器、一个16位锁存器组成。计数控制信号发生器,是将输入的50mhz的控制信号时钟分频,产生半周期为1s的输出信号,作为计数器的使能端,高电平时才计数,同时,当低电平时,不计数,锁存器工作。一周期后,对计数器清零,重新计数。因而计数控制信号发生器需要产生三组信号,分别是计数器使能信号,计数器清零信号,锁存器使能信号。4个十进制计数器,需要有使能信号输入,清零信号输入,进位输出。它们分别输出频率的个十百千位。低位的进位输出控制高位的计数时钟。3.数码管显示将输出的频率在数码管中显示。四管脚设定自行设定。五实验报告要求1.写出设计思路及框图2.简述设计步骤和调试过程,包括模块设计和相应模块的vhdl语言的设计源程序,引脚功能的定义文件,仿真结果。3.写出结论和心得体会。附录. altera de2常用管脚set_location_assignment pin_n25 -to sw0set_location_assignment pin_n26 -to sw1set_location_assignment pin_p25 -to sw2set_location_assignment pin_ae14 -to sw3set_location_assignment pin_af14 -to sw4set_location_assignment pin_ad13 -to sw5set_location_assignment pin_ac13 -to sw6set_location_assignment pin_c13 -to sw7set_location_assignment pin_b13 -to sw8set_location_assignment pin_a13 -to sw9set_location_assignment pin_n1 -to sw10set_location_assignment pin_p1 -to sw11set_location_assignment pin_p2 -to sw12set_location_assignment pin_t7 -to sw13set_location_assignment pin_u3 -to sw14set_location_assignment pin_u4 -to sw15set_loca

温馨提示

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

评论

0/150

提交评论