ImageVerifierCode 换一换
格式:DOCX , 页数:26 ,大小:629.92KB ,
资源ID:5287880      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5287880.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实验一实用计数器的VHDL设计说明.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实验一实用计数器的VHDL设计说明.docx

1、实验一实用计数器的VHDL设计说明实验一 实用计数器的VHDL设计一 实验目的熟悉quartusII的VHDL文本设计流程全过程,学习计数器的设计,仿真,进一步了解异步的概念。二 实验原理实用的D触发器除含有时钟端CLK外,还含有异步清零端CLR和时钟使能端ENA。这里的异步并非时序逻辑的异步,而是指独立于时钟控制的复位控制端,在任何时候,只要CLR=1,此时D触发器的输出端即可清零,与时钟信号无关。三 程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT(

2、CLK,RST,EN,LOAD:IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT : OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHAV OF CNT10 ISBEGIN PROCESS(CLK,RST,EN,LOAD) VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST=0 THEN Q :=(OTHERS=0); ELSIF CLKEVENT AN

3、D CLK=1 THEN IF EN=1 THEN IF(LOAD=0) THEN Q:= DATA; ELSE IF Q0); END IF; END IF; END IF; END IF; IF Q=1001 THEN COUT=1; ELSE COUT=0; END IF; DOUT =Q; END PROCESS;END BEHAV;四 程序分析该程序的进程语句中含有两个独立的IF语句。第一个IF语句是非完整性条件语句,因而将产生计数器时序电路;第二个IF语句产生一个纯组合逻辑的多路选择器。五 RTL电路图六 工作时序图通过对上图的观察可知:(1) 当计数器使能EN为高电平时允许计数;

4、RST低电平时计数器被清零。(2) 图中出现的加载信号LOAD由于是同步加载控制信号,其第一个负脉冲恰好在CLK的上升沿处,故将5加载于计数器,此后由5到9,出现了第一个进位脉冲。由于LOAD第二个负脉冲未在CLK上升沿处,故没有发生加载操作,而第3,第4个负脉冲都出现了加载操作,这是因为它们都处于CLK上升沿处。实验二 LPM计数器模块使用方法一 实验目的熟悉调用quartusII中的LPM计数器,掌握流程的设置以及时序仿真。二 实验原理掌握LPM计数器的调用方法,流程的测试,同类宏模块的一般使用方法及不同特性的仿真测试方法。三 设计过程(1)LMP_COUNTER计数器模块文本调用(2)生

5、成的计数器文件LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY lpm;USE lpm.all;ENTITY CNT4B IS PORT ( aclr : IN STD_LOGIC ; clk_en : IN STD_LOGIC ; clock : IN STD_LOGIC ; data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); sload : IN STD_LOGIC ; updown : IN STD_LOGIC ; cout : OUT STD_LOGIC ; q : OUT STD_LOGIC_VECTOR

6、(3 DOWNTO 0) );END CNT4B;ARCHITECTURE SYN OFt4b IS SIGNAL sub_wire0 : STD_LOGIC ; SIGNAL sub_wire1 : STD_LOGIC_VECTOR (3 DOWNTO 0); COMPONENT lpm_counter GENERIC ( lpm_direction : STRING; lpm_modulus : NATURAL; lpm_port_updown : STRING; lpm_type : STRING; lpm_width : NATURAL ); PORT ( sload : IN STD

7、_LOGIC ; clk_en : IN STD_LOGIC ; aclr : IN STD_LOGIC ; clock : IN STD_LOGIC ; cout : OUT STD_LOGIC ; q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0); data : IN STD_LOGIC_VECTOR (3 DOWNTO 0); updown : IN STD_LOGIC ); END COMPONENT;BEGIN cout = sub_wire0; q UNUSED, lpm_modulus = 12, lpm_port_updown = PORT_USED,

8、 lpm_type = LPM_COUNTER, lpm_width = 4 ) PORT MAP ( sload = sload, clk_en = clk_en, aclr = aclr, clock = clock, data = data, updown = updown, cout = sub_wire0, q = sub_wire1 );END SYN;四 时序仿真五 原理图输入设计实验三 基于LPM的流水线乘法累加器设计一实验目的熟悉调用quartusII中的LPM计数器,掌握流程的设置以及时序仿真。通过一个八位流水线乘法累加器的实例介绍顶层原理图工程,VHDL文本描述和宏功能块

9、为原理图元件的输入和设计方法。二实验原理通过TOOLS中的MegaWizard Plug- In Manager命令分别生成LPM加法器模块,乘法模块及寄存器模块。最后有序的将他们连接在一起构成八位乘法累加器顶层文件。三设计过程(1)LPM加法器模块设置调用(2)LPM乘法器模块设置调用(3)各模块的symbolADD16BMULT8BFF8B四8位乘法累加器顶层设计五乘法累加器的时序仿真由上述波形可知:在clk的第四个上升沿后才得到第一个计算数据,之前都是0,这就是流水线结构的计算结果。第四个上升沿得到结果为,而第五个上升沿后得到结果为,第六个上升沿后得到的结果为。实验四 全加器一 实验目的

10、熟悉quartusII的原理图输入设计方法,学会进行底层元件设计和层次化设计的主要步骤。二 实验原理1位全加器可以用两个半加器及一个或门而成,而一个半加器是由两个输入端,两个输出端,一个与门及一个异或门。三 实验容(1)半加器原理图(2)半加器仿真波形(3)半加器元件(4)全加器原理图(5)全加器时序仿真波形实验五 异步清零和同步加载与时钟使能的计数器一 实验目的熟悉quartusII的VHDL文本设计流程全过程,学习计数器的设计,仿真和硬件测试,掌握原理图与文本混合设计方法二 实验原理实用的D触发器除含有时钟端CLK外,还含有异步清零端CLR和时钟使能端ENA。这里的异步并非时序逻辑的异步,

11、而是指独立于时钟控制的复位控制端,在任何时候,只要CLR=1,此时D触发器的输出端即可清零,与时钟信号无关。三 设计过程(1) 程序分析LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 IS PORT(CLK,RST,EN,LOAD:IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(3 DOWNTO 0); -4位预置数 DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-计数值输出 COUT : OUT STD

12、_LOGIC);-计数进位输出END CNT10;ARCHITECTURE BEHAV OF CNT10 ISBEGIN PROCESS(CLK,RST,EN,LOAD) VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN IF RST=0 THEN Q :=(OTHERS=0);-复位低电平时,计数寄存器清0 ELSIF CLKEVENT AND CLK=1 THEN -测试时钟上升沿 IF EN=1 THEN -计数使能高电平,允许计数 IF(LOAD=0) THEN Q:= DATA; ELSE -预置控制低电平,允许加载 IF Q0);-否

13、则计数清0 END IF; END IF; END IF; END IF; IF Q=1001 THEN COUT=1;-当计数位9时,进位输出1 ELSE COUT=0; END IF;-否则进位输出0 DOUT =Q;-计数寄存器的值输出端口 END PROCESS;END BEHAV;该程序的进程语句中含有两个独立的IF语句。第一个IF语句是非完整性条件语句,因而将产生计数器时序电路;第二个IF语句产生一个纯组合逻辑的多路选择器。四 编译仿真波形(图一)(图二)五 原理图示意图六原理图时序仿真七分析结果选用CycloneIII系列高速FPGA出现的时序仿真图(如图一),没有出现毛刺现象,

14、而选择Cyclone系列FPGA就会出现毛刺现象(如图二)实验六 4选1多路选择器设计一 实验目的进一步熟悉QuartusII的VHDL文本设计流程,组合电路的设计仿真和测试。二 实验原理数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路,可以采用数据选择器进行选择再对该路信号加以利用。从多路输入信号中选择其中一路进行输出的电路称为数据选择器。或:在地址信号控制下,从多路输入信息中选择其中的某一路信息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简称MUX。三设计过程(1)RTL图(2)Symbol图四仿真波形五分析结果当s=0时y=a1;当s=1时y=a1;

15、当s=2时y=a2;当s=3时y=a3;六程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mux21a IS PORT(a,b,c,d :IN STD_LOGIC; s :IN STD_LOGIC_VECTOR(1 DOWNTO 0); y :OUT STD_LOGIC);END ENTITY mux21a;ARCHITECTURE one OF mux21a ISBEGIN y=a WHEN s=00 ELSE b WHEN S=01 ELSE c WHEN s=10 ELSE d;END ARCHITECTURE one;实验六 VHDL

16、有限状态机设计一实验目的1 进一步熟悉和掌握Quartus软件的各模块功能的使用方法。2加深对VHDL语言的了解,熟悉VHDL语言的语法特点深刻了解Quartus软件仿真中出现的各种问题并能加以解决。3学习使用和查看状态转换图二实验原理本设计说明部分中使用type语句定义新的数据类型。状态变量(如现态和次态)应定义为信号,便于信息传递,并将状态变量的数据类型定义为含有既定状态元素的新定义的数据类型。其中新定义的数据类型名是FSM_ST,其元素类型分别为s0,s1,s2,s3,s4,使其恰好表述状态机的五个状态。在此设计模块说明部分,定义了五个文字参数符号,代表五个状态。对于此程序,如果异步清零

17、信号reset有过一个复位脉冲,当前状态即可被异步设置为S0;与此同时,启动组合进程,“执行”条件分支语句。三设计结果及分析(1)生成symbol(2)时序波形图通过分析波形,进一步了解状态机的工作特性。需要注意,reset信号是低电平有效的,而clk是上升沿有效的,所以reset有效脉冲后的第一个时钟脉冲是第二个clk脉冲,第三个脉冲的上升沿后,现态c_st即进入状态S1.同时输出8,即“1000”。(3)状态图四程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FSM_EXP ISPORT (CLK,reset :IN STD_LOGIC;

18、 state_inputs :IN STD_LOGIC_VECTOR(0 TO 1); comb_outputs :OUT INTEGER RANGE 0 TO 15);END FSM_EXP;ARCHITECTURE behav OF FSM_EXP ISTYPE FSM_ST IS (s0,s1,s2,s3,s4);SIGNAL c_st,next_state:FSM_ST;BEGINREG:PROCESS (reset,clk) BEGIN IF reset=0 THEN c_st=s0; ELSIF CLK=1 AND CLKEVENT THEN c_st comb_outputs =

19、5; IF state_inputs =00 THEN next_state =S0; ELSE next_state comb_outputs =8; IF state_inputs =01 THEN next_state =S1; ELSE next_state comb_outputs =12; IF state_inputs =10 THEN next_state =S0; ELSE next_state comb_outputs =14; IF state_inputs =11 THEN next_state =S3; ELSE next_state comb_outputs =9;

20、next_state next_state =S0; END case;END PROCESS COM;END behav;实验八 ADC采样控制设计及多进程结构状态机一实验目的1、进一步熟悉和掌握Quartus软件的各模块功能的使用方法。2、加深对VHDL语言的了解,熟悉VHDL语言的语法特点,深刻了解Quartus软件仿真中出现的各种问题并能加以解决。3、学习使用和查看状态转换图二 实验原理本设计中的组合过程可以分为两个组合进程:一个负责状态译码和状态转换,另一个负责对外控制信号输出,从而构成一个三进程结构的有限状态机,其功能与前者一样,但程序结构更加清晰,功能分工更加明确。Moore型状

21、态机的输出仅为当前状态的函数,这类状态机在你输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。三 设计程序见附录四 设计结果及分析(1)生成symbol(2)时序波形图上图显示了一个完整的采样周期。复位信号后即进入状态s0,第二个时钟上升沿后,状态机进入状态s1(即cs=s1),由start、ale发出启动采样和地址选通的控制信号。之后,eoc由高电平变为低电平,0809的8位数据输出端呈现高阻态“ZZ”。在状态s2,等待clk数个时钟周期之后,eoc变为高电平,表示转述结束。(3)状态图五附录library ieee;use i

22、eee.std_logic_1164.all;entity ADC0809 is port(d:in std_logic_vector(7 downto 0); clk,rst:in std_logic; eoc :in std_logic; ale :out std_logic; start,oe:out std_logic; adda,lock_t:out std_logic; q :out std_logic_vector(7 downto 0);end ADC0809;architecture behav of ADC0809 istype states is(s0,s1,s2,s3,

23、s4); signal cs,next_state:states:=s0; signal regl :std_logic_vector(7 downto 0); signal lock :std_logic;begin adda=0; lock_tale=0; start=0;oe=0;lock=0;next_stateale=1; start=1;oe=0;lock=0;next_stateale=0; start=0;oe=0;lock=0; if (eoc=1) then next_state=s3; else next_stateale=0; start=0;oe=1;lock=0;n

24、ext_stateale=0; start=0;oe=1;lock=1;next_stateale=0; start=0;oe=0;lock=0;next_state=s0; end case;end process ;reg:process(clk,rst) begin if rst=1 then cs=s0; elsif clkevent and clk=1 then cs=next_state; end if;end process reg;latch1:process(lock) begin if lock=1 and lockevent then regl=d; end if;end process latch1; q IF DIN=1 THEN NST =s1; ELSE NST IF DIN=1 THEN NST =s2; ELSE NST IF DIN=0 THEN NST =s3; ELSE NST IF DIN=1 THEN NST =s4; ELSE NST IF DIN=0 THEN NST =s5; ELSE NST IF DIN=0 THEN NST =s6; ELSE NST IF DIN=1 THEN NST =s7; ELSE NST IF DIN=1 THEN

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1