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

上传人:牧羊曲112 文档编号:5174962 上传时间:2023-06-11 格式:DOCX 页数:39 大小:1.59MB
返回 下载 相关 举报
实验一 实用计数器的VHDL设计.docx_第1页
第1页 / 共39页
实验一 实用计数器的VHDL设计.docx_第2页
第2页 / 共39页
实验一 实用计数器的VHDL设计.docx_第3页
第3页 / 共39页
实验一 实用计数器的VHDL设计.docx_第4页
第4页 / 共39页
实验一 实用计数器的VHDL设计.docx_第5页
第5页 / 共39页
亲,该文档总共39页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《实验一 实用计数器的VHDL设计.docx》由会员分享,可在线阅读,更多相关《实验一 实用计数器的VHDL设计.docx(39页珍藏版)》请在三一办公上搜索。

1、实验一实用计数器的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 ISPORT(CLK,RST,EN,L

2、OAD: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 ISBEGINPROCESS(CLK,RST,EN,LOAD)VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RST=0 THEN Q : = (OTHERS=0);ELSIF CLKEVENT AND CLK=1 THENIF EN=

3、1 THENIF(LOAD=0) THEN Q:= DATA; ELSEIF 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为高电平时允许计数;RST低电平时计数器 被清零。(2) 图中出现的加

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

5、General2 rDo you want any optional inputs?-Synchronous inputs. CleaHH Load Set Set tn all lsO Set tn 0-Asynchronous inputs 0 Clear Load 5et Set tn all lsO Set tn 0Rssource Usage-lut reg.Cancel FinishSimulation LibrariesTo properly simulate the generated design files, the following simulation model f

6、ilefs) are neededFileDescriptionlpmLPM megafunctiun simulation libranrTming and resource estimationGenerates a netiist: for timing and resource estimation for this megafijnction. If you are synthesizing your design with a third-party synthesis toolr using a timing and resource estimation netlist can

7、 allow for better design optimization.Not all third-party synthesis tools support this feature - check with the tool vendor for complete support information.Note: Netlist generation can be a time-intensive process. The size of the design and the speed of your system affect the time it takes for netl

8、ist: generation to complete. Generate netlistResource Usage4 lut + 4egCancelFinish(2) 生成的计数器文件LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY lpm;USE lpm.all;ENTITY CNT4B ISclock:INSTD_LOGIC ;data:INSTD_LOGIC_VECTOR (3 DOWNTO 0);sload:INSTD_LOGIC ;updown: IN STD_LOGIC ;cout:OUT STD_LOGIC;q: OUT STD

9、_LOGIC_VECTOR (3 DOWNTO 0);END CNT4B;ARCHITECTURE SYN OF cnt4b ISSIGNAL sub_wire0 : STD_LOGIC ;SIGNAL sub_wire1 : STD_LOGIC_VECTOR (3 DOWNTO 0);COMPONENT lpm_counterGENERIC (lpm_direction : STRING;lpm_modulus : NATURAL;lpm_port_updown : STRING;lpm_type : STRING;lpm_width : NATURAL);PORT (aclr : IN S

10、TD_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;BEGINcout = sub_wire0;q UNUSED”,lpm_modulus = 12,lpm_port_updown = PORT_USED,lpm_type = LPM_COUNTER,lpm_width = 4)PORT MAP (clk_en

11、= clk_en,aclr = aclr, clock = clock, data = data, updown = updown, cout = sub_wire0, q = sub_wire1);END SYN;四. 时序仿真五. 原理图输入设计实验三基于LPM的流水线乘法累加器设计一. 实验目的熟悉调用quartusII中的LPM计数器,掌握流程的设置以及时序仿 真。通过一个八位流水线乘法累加器的实例介绍顶层原理图工程, VHDL文本描述和宏功能块为原理图元件的输入和设计方法。二. 实验原理通过TOOLS中的MegaWizard Plug- In Manager命令分别生成LPM加法器模

12、块,乘法模块及寄存器模块。最后有序的将他们连 接在一起构成八位乘法累加器顶层文件。三. 设计过程(1) LPM加法器模块设置调用Currentiy selected device fan- y:vH Match project/defaultHow wide should the dataa and datab input buses be? E v bitsWhich operating mode do you want for tiie adder/subtractor? Addition onlySubtraction onlyCreate an add_sub input port t

13、o allow me to do botii (1 adds; 0 subtracts)-Is the dataa or datab input bus value a constant? Nojr botii values yarO Yesr dataa =O YesT datab =-Which type of addition/subtraction do you want?Unsigned() SignedDo you want any optional inputs or outputs?Input: greats a carry irojOutputs:H Create a can

14、 y outputCreate an overflow outputI-Do you want to pipeline tiie function?O ) esr I want an output latency of 2 Clock cyclesI Create an asynchronous Clear inputI Create a Clock Enable inputSimulation LibrariesTo properly simulate the generated design files, the following simulation model file(s) are

15、 neededFileDescriptionIpmLPM megafunctiun sirnulatiun libraryTiming and resource estimationGenerates a netlist for timing and resource estimation for this megafijnction. If you are synthesizing ydudesign with a third-party synthesis toolr using a timing and resource estimation netlist can allow for

16、better design optimization.Not all third-party synthesis tools support this feature - check with the tool vendor for complete support information.Note: Netlist generation can be 日 time-intensive process. The size of the design and the speed of your system affect the time it takes for netlist generat

17、ion to complete. Generate netlist:CancelFinishTurn on the files you wish to generate. A gray checkmark indicates a file that is automatically generatedr and a red checkmark indicates an optional file. Click Finish to generate the selected files. The state of each checkbox is maintained in subsequent

18、 MegaWizard Plug-In Manager sessions.The MegaWizard Plug-In Manager creates the selected files in the following directory:E:WANGHOUYING 心6 VULTADD FileDescription0 ADD16B.vhdVariation file ADD16B.incAHDL Include file0 ADD16B.cmpVHDL cumpunent declaratiun file ADD16B.bsfQuartus II symbol file ADD16B_

19、inst.vhdInstantiation template fileH AD D16B_waveforms.htmlSample waveforms: in summanr1ADD16B_wave:.ipgSample .aveform file(s)Resource Usage33 lut |厂|=Cancel 2 OUtH 0SUITlH 0tnRnArLn_rLnnRrLn_rLn_rLRnArLn_rLnnRrLn_rLn_rLRnArLn_rLrLrLRnArLn_rLnnRrLn_rLr川时 | n | n n | n 门 i n n i n i i n i二 I I I I I

20、 I I I I I I III I I l 二 I I I I I I I III I I III mn! ! mLrLn_rLn_rLRnArLn_rLrLrLRnArLn_rLRnArLn_rLrLrLRnArLn_rLrLrLnLrLn_rLn_rLRnArLn_rLr实验五异步清零和同步加载与时钟使能的计数器一. 实验目的熟悉quartusII的VHDL文本设计流程全过程,学习计数器的设计, 仿真和硬件测试,掌握原理图与文本混合设计方法二实验原理实用的D触发器除含有时钟端CLK外,还含有异步清零端CLR 和时钟使能端ENA。这里的异步并非时序逻辑的异步,而是指独 立于时钟控制的复位控

21、制端,在任何时候,只要CLR=1,此时 D触发器的输出端即可清零,与时钟信号无关。三. 设计过程(1)程序分析LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY CNT10 ISPORT(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_LOGIC);计数进位输出E

22、ND CNT10;ARCHITECTURE BEHAV OF CNT10 ISBEGINPROCESS(CLK,RST,EN,LOAD)VARIABLE Q : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINIF RSM0 THEN Q : = (OTHERS=0);-g位低电平时,计数寄存器清0ELSIF CLKEVENT AND CLK=1 THEN 测试时钟上升沿IF EN=l THEN-计数使能高电平,允许计数IF(LOAD=0) THEN Q:= DATA; ELSE 预置控制低电 平,允许加载IF Q0);-否则计数清 0END IF;END IF;END I

23、F;END IF;IF Q二1001 THEN COUT=1;当计数位 9 时,进位输出 1ELSE COUT=0;END IF;-否则进位输出0DOUT =Q;-计数寄存器的值输出端口END PROCESS;END BEHAV;该程序的进程语句中含有两个独立的IF语句。第一个IF语句是非 完整性条件语句,因而将产生计数器时序电路;第二个IF语句产 生一个纯组合逻辑的多路选择器。四. 编译仿真波形DATAnoi.rrLOADcoi.rr(图一)CU:HjnmRTLminnnmoRonmRrLonnRrLrLrLonnnmwmmmrLnRnLrEKHiKSTHLILOADHLI LILILJ国

24、DATAH i noi.rrH icoinH inE I 1 1 1 1 1 Ki | | | e(图二)五. 原理图示意图六. 原理图时序仿真DATAnoi.rrHj nmmoonn几TLomnn几rLrLrLnRrHRrLrLrLonnnmojmmmrLnRnLrLOADcoin七. 分析结果选用CycloneIII系列高速FPGA出现的时序仿真图(如图一),没 有出现毛刺现象,而选择Cyclone系列FPGA就会出现毛刺现象(如图二)实验六4选1多路选择器设计一. 实验目的进一步熟悉QuartusII的VHDL文本设计流程,组合电路的设计仿真和 测试。二. 实验原理数据选择器在实际中得到

25、了广泛的应用,尤其是在通信中为了利 用多路信号中的一路,可以采用数据选择器进行选择再对该路信号加 以利用。从多路输入信号中选择其中一路进行输出的电路称为数据选择 器。或:在地址信号控制下,从多路输入信息中选择其中的某一路信 息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简 称 MUX。三. 设计过程(1) RTL 图EqualOr1 0r1 .0(2) Symbol 图四. 仿真波形五. 分析结果当 s=0 时 y=a1;当 s=1 时 y=a1;当 s=2 时 y=a2;当 s=3 时 y=a3;六程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.AL

26、L;ENTITY mux21a ISPORT(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 ISBEGINy=a WHEN s=00 ELSEb WHEN S=01 ELSEc WHEN s=10 ELSEd;END ARCHITECTURE one;实验六VHDL有限状态机设计一. 实验目的1. 进一步熟悉和掌握Quartus软件的各模块功能的使用方法。2. 加深对VHDL语言的了解,熟悉VHDL语言

27、的语法特点深刻了解 Quartus软件仿真中出现的各种问题并能加以解决。3. 学习使用和查看状态转换图二. 实验原理本设计说明部分中使用type语句定义新的数据类型。状态变量(如 现态和次态)应定义为信号,便于信息传递,并将状态变量的数据类 型定义为含有既定状态元素的新定义的数据类型。其中新定义的数据 类型名是FSM_ST,其元素类型分别为s0,s1,s2,s3,s4,使其恰好表述状 态机的五个状态。在此设计模块说明部分,定义了五个文字参数符号, 代表五个状态。对于此程序,如果异步清零信号reset有过一个复位 脉冲,当前状态即可被异步设置为S0;与此同时,启动组合进程“执 行”条件分支语句。

28、三. 设计结果及分析(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;state_inputs :IN STD_LOGIC_VECTOR(0 TO 1);comb

29、_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) BEGINIF reset=0 THEN c_st=s0;ELSIF CLK=1 AND CLKEVENT THEN c_st comb_outputs =5;IF state_inputs =00 THEN next_state =S0;ELSE nex

30、t_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;next_state next_state =S0;END case;END PROCESS COM;END beh

31、av;实验八ADC采样控制设计及多进程结构状态机一. 实验目的1、进一步熟悉和掌握Quartus软件的各模块功能的使用方法。2、加深对VHDL语言的了解,熟悉VHDL语言的语法特点,深刻了 解Quartus软件仿真中出现的各种问题并能加以解决。3、学习使用和查看状态转换图二. 实验原理本设计中的组合过程可以分为两个组合进程:一个负责状态译码和状 态转换,另一个负责对外控制信号输出,从而构成一个三进程结构的 有限状态机,其功能与前者一样,但程序结构更加清晰,功能分工更 加明确。Moore型状态机的输出仅为当前状态的函数,这类状态机在 你输入发生变化时还必须等待时钟的到来,时钟使状态发生变化时才导

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

33、(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 is type states is(s0,s1,s2,s3,s4);signal cs,next_state:states:=s0;signal regl:st

34、d_logic_vector(7 downto 0);signal lock:std_logic;beginadda=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;next_stateale=0;start=0;oe=1;lock=1;next_stateale=0;start=0;oe

35、=0;lock=0;next_state=s0;end case;end process com;reg:process(clk,rst) beginif rst=1 then cs=s0;elsif clkevent and clk=1 then cs=next_state; end if;end process reg;latch1:process(lock) beginif 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 NSTIFDIN=0THENNST=s3;ELSENSTIFDIN=1THENNST=s4;ELSENSTIFDIN=0THENNST=s5;ELSENSTIFDIN=0THENNST=s6;ELSENSTIFDIN=1THENNST=s7;ELSENSTIFDIN=1THENNST=s8;ELSENSTIFDIN=0THENNST=s3;ELSENSTNST=s0;END CASE;END PROCESS;REG:PROCESS(CLK,RST) BEGINI

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号