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

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

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

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 i3 ALTSQRT3 LPM_ABS3 LPM_ADD_SUB3 LPM_COMPARE 1 LPM_C0 UNTER 密Z LPM_DIVIDEvwhich Wp已 of output file do you want to create?r AHDL汗 VHDLr Verilog HDLwhat name do you want for the output

4、 file?| E:WANGH0UYINGch6-2Fleturn to this page for another create operationBrowse.Note: To compile a project successfully in the uartus II software, your design files must be in the project directory, in the global user libraries specified in the Options dialog box (Tools menu), or a user library sp

5、ecified in the User Libraries page of the Settings dialog box (Assignments menu).Your current user library directories are:0 Match project/d&feultXXO Up onlyO Dov.i-! onlv greats ar Lipdown ipLit port to allow nie to do botiiE1 counts up; 0 counts dowrCancelFinish |Currently selected device family!X

6、sloadda.ta3.Oup down clo ckHow wide should the 1CancelFinish-Whidi type of couriter do you want ?C Plain binary() MadnluSr wth a count madulus of 12-Do you want any optional additiorial port5?0 Cl ock. En able口 CarryHn Count Enable0 arry-outResource Usac;e lut f rggCancel;西deNejF-iishIIGeneralGenera

7、lOptional Inputs J-Synthrcnaus inputs口 riearj0 Load Set Set tn all 1sO Settx? |o_-Asyndironaus inputs0 Clear匚 Load Set Set to all 1s0 Set to 0Cancel2iish(2) 生成的计数器文件LIBRARY ieee;USE ieee.std_logic_1164.all;LIBRARY lpm;USE lpm.all;ENTITY CNT4B ISPORTclock:INSTD_LOGIC ;data:INSTD_LOGIC_VECTOR (3 DOWNT

8、O 0);sload:INSTD_LOGIC ;updown: IN STD_LOGIC ;cout:OUT STD_LOGIC;q: OUT STD_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_po

9、rt_updown : STRING;lpm_type : STRING;lpm_width : NATURAL);PORT (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;BEGINcout = sub_wire0;q UNUSED”,l

10、pm_modulus = 12,lpm_port_updown = PORT_USED,lpm_type = LPM_COUNTER,lpm_width = 4)PORT MAP (clk_en = clk_en, aclr = aclr, clock = clock, data = data, updown = updown, cout = sub_wire0, q = sub_wire1);END SYN;四. 时序仿真Valiue1?尽ps E.5& u= 5. LZ ns T.6f us 10. El ns IE. f us 15. 3B us LT.军 m ZD. =23. 0A u

11、s Z5. &i =LT 525 de150CIZI: i_rLrLrLrLrLrLrLrLrLrLrLrLrVLrLrLrLrLrLrLrLTLrLrLrLrL匚瑚ESI1lnnI: 1i inUBli 11砂国DPTK i:5X日XTX 6B COTITL5EUUTli| | | | 五. 原理图输入设计实验三基于LPM的流水线乘法累加器设计一. 实验目的熟悉调用quartusII中的LPM计数器,掌握流程的设置以及时序仿 真。通过一个八位流水线乘法累加器的实例介绍顶层原理图工程, VHDL文本描述和宏功能块为原理图元件的输入和设计方法。二. 实验原理通过TOOLS中的MegaWizard

12、 Plug- In Manager命令分别生成LPM加法器模块,乘法模块及寄存器模块。最后有序的将他们连 接在一起构成八位乘法累加器顶层文件。三. 设计过程(1) LPM加法器模块设置调用legafizard Plug-In. Eana.ger page 1 The M&gaWisard Plug-In Manager helps create or modi以 design files that contain custom vanatiors of megafunctions.Which action doou want to perform?G Create a new custom m

13、ega function variabotjEdit an existing custom mega fund ion variation- an existing custom rmegaFunction variatianCopyright C) 1991-2009 Altera CorporationCancel TEA ALTECCJ ALTFP_ABSJ ALTFP_ADD_SUBJ ALTFP_COMPARE才 ALTFF_CONVEFiTJ ALTFP_D IVJ ALTFP_E?PJ ALTFPJNVJ ALTFP_INV_SQRTJ ALTFP_LOGALTFP_MATRIX

14、_MULTJ ALTFP_MULT土| ALTFP_SQRTJ ALTMEMMULTJ ALTMULT_ACCUM (MAC)J ALTMULT_ADDJ ALTMULT_COMPLEX, | ALTSQRTA LPM_ABSWhich type of output file do you want to create?C AHDLG VHDLC Verilog HDLWhat name do you want for the output file?Browse.| E: WAN G H U Yl N G ch6-3M U LT AD D AD D16B- Return to this pa

15、ge for another create operationNote: To compile a project successfully in the Quartus II software, your design files must be in the project directory, in the global user libraries specified in the Options dialog box (Tools menu), or a user library specified in the User Libraries page of the Settings

16、 dialog bow (Assignments menu).Your current user library directories are:LPM_ADD_SUBLPM_COMPARELPM_COUNTERLPM_DIVIDECancelFinishCurrentiy se ected device fan y:v0 Match project/defaultHow wide should the dataa and datab input buses be? IE v bits-Which operating mode do you v.ant for the adder/subtra

17、ctnr?( Addition onlyO Subtraction only Create an ladd_subl input port to allow me to do botii(1 adds; 0 subtracts)-Is the dataa1 or datab inpLit bus value 日 oanstant? valuesO VeSj dataa = |O Yes i datab = |Which type of addition/subtraction do you want?O Unsigned SignedDo you want any optional input

18、s or outputs?Input: W虫就方.g.迎?Jn叫&Outputs:0 Create a 匚arry output Create an overflow outputI-Do you want to pipeline the function? Yesr I want an output latency of Clock cycles Create an asynchronous Clear input Create a Clocfc Enable inputFileDescriptionIpmLPM megafunctiLin sirriuldtinn libraryResou

19、rce Usage33 lutCancelFinishSimulation LibrariesTo properly simulate the generated design filesr the fblloAjng simulation model filefs) are neededTiming and resource estimationGenerates a netiist fbtiming and resource estimation for this megafijnction. If you are synthesizing your design with a third

20、-party synthesis toolr using a timing and resource estimation netiist can allow for better design optimization.Not all third-party synthesis tools support this feature - check with the tool vendor for complete support: information.Note: Netiist generation can be a time-intensive process. The size of

21、 the design and the speed of your system affect the time it takes for netiist generation to complete. Generate netiist:Rsscurce Usage33 lutCancele logic elementsMULT8Bclocks;dataa7.Ojatab-.OrsBult15-.0lrrLltipliDationDo you want to pipeline the function?ONq? Yesr I want an output latency of 2 clock,

22、 cycles Create an asynchronous Clear input Create a Clock Enable input:(3)各模块的symbolADD16Bcbck|_ 1 iatabtT.-Or=BLlt15.MULT8BL?bc-:二一二10+ datab:2 X 3 X 4 X 5 X& X 7 X 8 X 9 X 1口 X 11 X IN X 13 X 14 X IS X 16J 19coutC20:o -* 9 *33义曲打17打7以24叩3拥*4雹*颓*65球I11111111111111111由上述波形可知:在clk的第四个上升沿后才得到第一个计算数据,之

23、前都是0,这就是流水线结构的计算结果。第四个上升沿得到结果为S=-。X己=U,而第五个上升沿后得到 结果为S二。E + 3 X m = 3,第六个上升沿后得到的结果为S二3X3+6X4=33实验四全加器一. 实验目的熟悉quartusII的原理图输入设计方法,学会进行底层元件设计和 层次化设计的主要步骤。二实验原理1位全加器可以用两个半加器及一个或门链接而成,而一个半加 器是由两个输入端,两个输出端,一个与门及一个异或门。三. 实验内容(1)半加器原理图(4)全加器原理图(5)全加器时序仿真波形导0bincinCPUt3UDH 0H 0H 0H H 0trumnnjmnrmjmnnnjummT

24、umrmTumrmjuuinnnjumnTuummumru n n I I i I I i I I I I I I 11111 I I I I I I i i n i II I I I I iiin III I J |_I Inn J u |n!n! I I I I I I ! ! ! ! ! I I I I I I ! ! ! ! I I I I I I I ! ! ! ! I I I I I 师ili丁厂LinrjuiirLrjummBrjLiirnnnnunTjnwniir实验五异步清零和同步加载与时钟使能的计数器一. 实验目的熟悉quartusII的VHDL文本设计流程全过程,学习计数

25、器的设计, 仿真和硬件测试,掌握原理图与文本混合设计方法二. 实验原理实用的D触发器除含有时钟端CLK外,还含有异步清零端CLR 和时钟使能端ENA。这里的异步并非时序逻辑的异步,而是指独 立于时钟控制的复位控制端,在任何时候,只要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_

26、VECTOR(3 DOWNTO 0); _4 位预置数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 RSM0 THEN Q : = (OTHERS=0);-g位低电平时,计数寄存器清0ELSIF CLKEVENT AND CLK=1 THEN 测试时钟上升沿

27、IF EN=l THEN-计数使能高电平,允许计数IF(LOAD=0) THEN Q:= DATA; ELSE 预置控制低电 平,允许加载IF Q0);-否则计数清0END IF;END IF;END IF;END IF;IF Q二1001 THEN COUT=1;当计数位9时,进位输出1ELSE COUT=0;END IF;-否则进位输出0DOUT =Q;-计数寄存器的值输出端口END PROCESS;END BEHAV;该程序的进程语句中含有两个独立的IF语句。第一个IF语句是非 完整性条件语句,因而将产生计数器时序电路;第二个IF语句产 生一个纯组合逻辑的多路选择器。四. 编译仿真波形D

28、ATAmirrLflJJZiBUT(图一)(图二)五. 原理图示意图六. 原理图时序仿真BJUAnoin:Ej innjinnjuumnnmumjuumnnjinjuuumnnjinjmjumnnnnjmnjumjwLOMJcoi.rr七. 分析结果选用CycloneIII系列高速FPGA出现的时序仿真图(如图一),没 有出现毛刺现象,而选择Cyclone系列FPGA就会出现毛刺现象(如图二)实验六4选1多路选择器设计一. 实验目的进一步熟悉QuartusII的VHDL文本设计流程,组合电路的设计仿真和 测试。二. 实验原理数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利 用多路信号中

29、的一路,可以采用数据选择器进行选择再对该路信号加 以利用。从多路输入信号中选择其中一路进行输出的电路称为数据选择 器。或:在地址信号控制下,从多路输入信息中选择其中的某一路信 息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简 称 MUX。三. 设计过程(1) RTL 图EqualO(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.ALL;ENTITY mux21a ISPORT(a,b,c,d :IN

30、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语言的语法特点深刻了解 Quartus软件仿真中出现的各种问题并能加以解决

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

32、态机的工作特性。需要注意,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_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 =

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

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


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号