-1-/76.2LPM计数器模块使用方法和例化——10电信本(2)班石健康100917009实验名称:LPM计数器模块的使用方法实验预期:学习LPM计数器LPM_COUNTER的调用方法、流程的测试,掌握MegaWizardPlug_InManager管理器对同类宏模块的一般使用方法;文档来自于网络搜索实验内容:一、LPM_COUNTER计数器模块文本文件的调用1.在程序文件夹abceda下建立子文件夹LPM_MD;2.选择菜单栏Tools→MegaWizardPlug_InManager命令,打开对话框如图所示:图表1定制新的宏功能块3.选中createanewcustommegafunctionvariatin单选按钮,即定制一个新的模块(如果要修改一个已编辑好的LPM模块,则选中Editanexistingcustommegafunctionvariation单选按钮);文档来自于网络搜索4.单击Next按钮,在弹出的窗口中选择Arithmetic展开LPM算术模块选项。选择计数器LPM-COUNTER,再在右上选择CycloneⅢ器件系列和VHDL语言方式。最后输入此模块文件存放的路径和文件名:f:\abceda\LPM_MD\cnt4b:文档来自于网络搜索-2-/75.单击next按钮,弹出对话框。选择4位计数器,选择“Creatanupdowninput…”使计数器有加减控制功能。文档来自于网络搜索-3-/76.单击next按钮,打开对话框,选择Modulus…12,则表示模12计数器,从0记到11(若选择Plainbinary则表示是普通的二进制计数器)。然后选择时钟使能控制ClockEnable和进位输出Carry-out,如图:文档来自于网络搜索7.再单击next按钮,打开对话框,选择4位数据同步加载控制Load和异步清零控制Clear,如图:-4-/78.再按next按钮结束设置。二、例化1)生成的LPM计数器模块VHDL源程序cnt4b如下:LIBRARYieee;USEieee.std_logic_1164.all;LIBRARYlpm;USElpm.all;ENTITYcnt4bISPORT(aclr:INSTD_LOGIC;clk_en:INSTD_LOGIC;clock:INSTD_LOGIC;data:INSTD_LOGIC_VECTOR(3DOWNTO0);sload:INSTD_LOGIC;updown:INSTD_LOGIC;cout:OUTSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDcnt4b;ARCHITECTURESYNOFcnt4bISSIGNALsub_wire0:STD_LOGIC;SIGNALsub_wire1:STD_LOGIC_VECTOR(3DOWNTO0);COMPONENTlpm_counterGENERIC(lpm_direction:STRING;-5-/7lpm_modulus:NATURAL;lpm_port_updown:STRING;lpm_type:STRING;lpm_width:NATURAL);PORT(sload:INSTD_LOGIC;clk_en:INSTD_LOGIC;aclr:INSTD_LOGIC;clock:INSTD_LOGIC;cout:OUTSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0);data:INSTD_LOGIC_VECTOR(3DOWNTO0);updown:INSTD_LOGIC);ENDCOMPONENT;BEGINcout=sub_wire0;q=sub_wire1(3DOWNTO0);lpm_counter_component:lpm_counterGENERICMAP(lpm_direction=UNUSED,lpm_modulus=12,lpm_port_updown=PORT_USED,lpm_type=LPM_COUNTER,lpm_width=4)PORTMAP(sload=sload,clk_en=clk_en,aclr=aclr,clock=clock,data=data,updown=updown,cout=sub_wire0,q=sub_wire1);ENDSYN;它调用了更底层的文件lpm_counter,同时可以作为一个底层元件被上一层设计调用或例化。二)设计一新程序对cnt4b进行例化,新程序CNT4BIT如下:LIBRARYieee;USEieee.std_logic_1164.all;-6-/7ENTITYCNT4BITISPORT(CLK,RST,ENA,SLD,UD:INstd_logic;DIN:INstd_logic_vector(3DOWNTO0);COUT:OUTstd_logic;DOUT:OUTstd_logic_vector(3DOWNTO0));ENDENTITYCNT4BIT;ARCHITECTUREtranslatedOFCNT4BITISCOMPONENTCNT4BPORT(aclr,clk_en,clock,sload,updown:INSTD_LOGIC;文档来自于网络搜索data:INSTD_LOGIC_VECTOR(3DOWNTO0);cout:OUTSTD_LOGIC;q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));ENDCOMPONENT;BEGINU1:CNT4BPORTMAP(sload=SLD,clk_en=ENA,aclr=RST,文档来自于网络搜索cout=COUT,clock=CLK,data=DIN,updown=UD,q=DOUT);文档来自于网络搜索ENDARCHITECTUREtranslated;三、创建工程与仿真测试1.对cnt4bit.vhd进行波形仿真,如图:图表2CNT4BIT.V仿真波形2.建立一个新的原理图顶层文件,创建为工程文件,调入原件生成原理图,并对其进行波形仿真,如图:图表3CNT4BIT原理图-7-/7图表4CNT4BIT原理图仿真波形四、结果分析通过实验并对图观察分析可知:(1)两仿真波形相同;(3)当时钟使能ena为高电平时允许计数,rst为高电平时计数器清零。(4)Sld加载信号在CLK上升沿处可以加载,不在CLK上升沿处时无法进行加载,显然Sld是同步预置数加载控制。文档来自于网络搜索(5)UD为高电平时为加法控制,为低电平时为减法控制。