在Verilog设计中使用参数化模块库

上传人:ba****u 文档编号:124184681 上传时间:2022-07-24 格式:DOCX 页数:18 大小:664.47KB
收藏 版权申诉 举报 下载
在Verilog设计中使用参数化模块库_第1页
第1页 / 共18页
在Verilog设计中使用参数化模块库_第2页
第2页 / 共18页
在Verilog设计中使用参数化模块库_第3页
第3页 / 共18页
资源描述:

《在Verilog设计中使用参数化模块库》由会员分享,可在线阅读,更多相关《在Verilog设计中使用参数化模块库(18页珍藏版)》请在装配图网上搜索。

1、在 Verilog 设计中使用参数化模块库 (Quartus II)(Verilog)Contents:范例电路参数化模块库使用 LPM 的扩展电路(Arguemented Circuit)扩展设计的结果实际设计中经常包含通用的电路块,比如:加法器、减法器、乘法器、译码器、计数器和移位寄存器。 Altera 以模块库的形式提供这些电路块,可在Verilog设计中例化。编译器可以识别模块库里用Verilog代码指定的标准功 能,这样就会自动推断这个模块。但是,很多模块库提供太复杂的功能而不能被自动识别。这些模块必须 被用户在设计里明确的例化。Quartus II包含一个参数化的模块库(LPM)。

2、这些模块采用通用结构,并且需要修该指定的参数值 来实现指定的应用。完成本文,读者将学会: 参数化的模块库(LPMs) 在电路里配置一个LPM 在设计电路里例化一个LPM本文范例的细节由Quartus II 9.1截取,其他版本类似。1. 范例电路作为范例,我们使用图1所示的加/减器电路。它可以加、减,并以2的补码表示运算n-bit的数。2个主 要的输入是数A=anTan-2aO和B=bnTbn-2bO,主要的输出是Z=znTzn-2zO。另一个输入是控制信号AddSub,当AddSub=0时Z=A+B;当AddSub=1时,Z=A-B.第2个输入控制信号Sel被用来选择运算模式的操作。当Sel

3、=O时, Z=A+-B;当Sel=1时,B被从当前Z的值加到或减去。如果加法或减法操作的结果溢出,一个输出信号Overflow被 激活。为了较容易处理异步输入信号,在时钟上升沿它们被加载到触发器。因此,输入A和B将被加载到寄 存器 Areg 和 Breg,而Sel和AddSub将被加载到触发器SelR和AddSubR。加/减器电路的结果放在寄存器Zreg。需要的电路如图2描述。在我们的例子里,我们用一个16位的电路,指定n=16实现的过程如下: 创建一个工程 addersubtractor。 在工程里包含图2相应的文件addersubtractor.v。为了方便,这个文件在DE2附带光盘里提供

4、:DE2_tutorialdesign_files。 选择器件Cyclone II EP2C35F672C6,因为DE2上用得这个:) 编译设计 通过应用一些典型的输入仿真设计代码:田代码1/Top-level module 2moduleaddersubtractor(A,B,Clock,Reset,Sel,AddSub,Z,Overflow); 3parameter n=16;4input n-1:0A,B;5inputClock,Reset,Sel,AddSub;6output n-1:0Z;7output Overflow; 8regSelR,AddSubR,Overflow;9reg

5、 n-1:0Areg,Breg,Zreg;10wire n-1:0G,H,M,Z; 11wirecarryout,over_flow;1213/Define combinational logic circuit14assign H二BregnAddSubR;15 mux2to1 multiplexer(Areg,Z,SelR,G);16defparammultiplexer.k二n; 17adderknbit_adder(AddSubR,G,H,M,carryout);18defparamnbit_adder.k=n;19assignover_flow二carryo ut ”GnTHn-1厂

6、MnT; 20assign Z=Zreg;2122/Define flip-flops and registers23always (posedge Reset orposedge Clock) 24if(Reset=1)25begin 26Areg=0;27Breg=0;28Zreg=0;29SelR=0; 30AddSubR=0;31 Overflow=0;32end33else34begin35Areg=A;36Breg=B;37Zreg=M;38SelR=Sel; 39AddSubR=AddSub;40 OverflowMegafunctions/LPM 打开可用的 LPM 列表。其中

7、 一个是加/减器模块,lpm_add_submegafunction。选择这个模块,查看其描述。这个模块有一些输入和输出,其中部分可 省略。几个参数可用来定义指定的操作。比如,操作数的位由参数LPM_WIDTH指定。参数LPM_REPRESENTATION指定操 作数作为有符号数还是无符号数,等等。在模块描述中给出如何例化一个LPM的模板。使用这些模板稍微不便,因 此 Quartus II 提供一个更容易的例化向导。我们将使用lpm_add_sub模块来简化图1和图2的加/减器。修改电路如图3.lpm_add_sub模块例化为 megaddsub,代替加法电路里提供加法输入H的异或门。既然运算

8、溢出是LPM的一个输出,就没必要单独用一个异或门生 成。要完成这个加减器电路,创建一个新的目录tutorial_lpm,并创建一个新工程addersubtractor2。图 3新的设计将包括目标LPM子电路,并在顶层设计模块例化。LPM子电路的Verilog模块生成步骤如下:1. 选择 Tools MegaWizard Plug-in Manager,弹出配置窗口。2. 在图 4,选择 Create a new custom megafunction variation 然后单击 Next。defect a megafuncbon Irom the litVhflch-devke Fim 祁

9、曲 y% bt using?| Cyclotie II- 麵 AfiihmeticALTACCUMULATE ALTCCC ALFFRAQS AirFPjlDD_SU6 ALrffCXJMFARE ALTfF_CONVERT ALTFP列ALT叵E沖 ALTFFJMV ALTFFINV.&QRT ALFfP-LOG LrfP_mTRfX_lt,4LrfP_MA.TRIi_MULAL1TP-MUL7ALTFF_SqR7ALTMEMMULTWhidi lype of odtpcd Ms- do you waml tip create? 广蛰1DLr甥DL恥屈HC1What name da you

10、wtH fw the lile?IP-r1iffVM()ii3r.MQi3Ltnririsfladdsul 4LFMULTJLCUMEMACJ AU 锹JLT_4DLPMUn .COMPLEXALTQFHLFM_ABSLPM_ADD_SUBLPM.CDh+FELPMCOUNTEfl7I斶吐 帥町|刖网|图 53. 在图 5 的窗口提供可用的 LPM 列表。展开 arithmetic 子列表并选择 LPM_ADD_SUB 。选择输出文件类型为Verilog HDL。指定输出文件名megaddsub.v和路径。单击Next。图 64. 在图 6 中指定输入数据的位宽为 16 位,通过一个端口指定操

11、作模式,执行加或减运算。在窗口的 左上角可以看到这个LPM的符号。注意,当add_sub=l时,result=A+B;反之,result=A-B.这个图1的设计不同。在图 3 中已经提到。单击 Next.5. 在图 7 的窗口,选择输入值都可改变,单击 Next。Do you any optional iinpdt or tMilpdits?nwerftow,FinishInput:Create a carK/bofrow-mit inpuA.丹闹infig、T Parameter SettingsGgri即制 Gensr# 上LPM ADDSUBDocumentationOutputs:匚

12、reate & carry/tiMriow-ri cmitptI Create anoverftiipw 議誠tilnniinmni iii iiisi isi s limegadcfub、呷创 5.皿討些严-egaTizard Plug-iR Sanaer - LFl_ADD_SJli page 5 of 8JCnceJ6.在图 8 窗口选择 Create an overflow output,单击 Next。忙$说|诗.0 獻抽 115X13Iovertisw.ID1US CteIgaTizard Flu-In lanacer - LP1_ADD_SUB page E of SUsage3

13、2MCancelNextYes, I want 妙 output latency of匸lock tmlwmegaddsut.acfri阳岡齿-DLPM ADD SUBDocumerrtatwfi图 9n| Paret ei-ttngsG亨命&咋闻1盘y f7.在图9窗口,选择No,单击next。8. 图 10 给出向导创建的文件的总结。单击 Finish。I.TM帕网险曲1=9 讯 时翩门抽 轉 恤 心islsd蝕 IM fsfewing drtfclwr:F:tk*i*iJhx 制futcnalJpfTiljC-ancelsard Phu电一Tn anaecr - LPl_iDB_SffB

14、 pasc 8 of 固Tim on the fiK you wfch to gemrate. A gr刖 由嶼kirerk 曲&就整 a Fie Ihjt is atJkmabc* Qeiwedj and a red dheclmni. ndk出時 cptkjnai fie- dck cFrbthe ed F昭.The 軒 BAh ehfcba! e: mtMsrre 詰ftjfoecjust MfuaWVard PtjEn Waivwr sesstoraM? rfrfsaddsub.” mcadqlS.ub 口 mcaddib.cw ffi*gadd!ijb.bsl 口 medd sub力

15、威“ 国10乂3旳-旳13阳血帼.Juiri-mpgtd5iJb=_wme4 fsgiahDlIz* 店VH DI coniponwt *d&aCcn 両 QuJriusll泸也I他甲価g HOL U4出伽 He Smpit 也沁Teem* n uaiyuj Synple wwodcin IfcjsjFtegpyr&e 比砂2T2kjtrm彌血列b|Jdd_njbb-dati!K415 Q|_LliutI15.0l.OafiBtfiiS 0|u ,ccwl 如.图 103 使用 LPM 的扩展电路在修改的设计中将使用 megaddsub.v。代码 megaddsub.v国代码/ synopsy

16、stranslate_offtimescale Ips / Ips/ synopsystranslate_on modulemegaddsub ( add_sub, dataa, datab,overflow, result);inputadd_sub;input input output output15:0 dataa;15:0 datab; overflow;15:0 result;wire sub_wire0;wire 15:0 sub_wire1;wire overflow = sub_wire0;wire 15:0 result = sub_wire115:0;lpm_add_su

17、blpm_add_sub_component ( .dataa (dataa), .add_sub (add_sub), .datab (datab), .overflow (sub_wire0), .result (sub_wire1)/ synopsystranslate_off.aclr (), .cin (), .clken (), .clock (), .cout ()/ synopsystranslate_on);defparam lpm_add_sub_component.lpm_direction = UNUSED, lpm_add_sub_component.lpm_hint

18、 = ONE_INPUT_IS_CONSTANT=NO,CIN_USED=NO, lpm_add_sub_component.lpm_representation = UNSIGNED, lpm_add_sub_component.lpm_type = LPM_ADD_SUB, lpm_add_sub_component.lpm_width = 16;endmodule 修改后的加减器代码如下。将这个代码加入文件tutorial_lpmaddersubtractor2。为了方便,DE2附带光 盘也提供了这个 文件。这个代码和前面的不同之处在于: 定义over_flow信号的赋值语句和异或门不再

19、需要。 加法电路的实例adderk被megaddsub取代。注意在图6输入dataa和datab各自被变量G和Breg 驱动。信号 AddSub取反以适合这个控制信号在LPM里的用法。 删除 adderk 模块。代码 addersubtractor2国代码1/Top-level module2 module addersubtractor2(A,B,Clock,Reset,Sel,AddSub,Z,Overflow); 3parameter n=16;4input n-1:0A,B;5inputClock,Reset,Sel,AddSub;6output n-1:0Z;7output Over

20、flow;8regSelR,AddSubR,Overflow;9reg n-1:0Areg,Breg,Zreg;10wire n-1:0G,M,Z;11wireover_flow;1213 /Define combinational logic circuit14 mux2to1 multiplexer(Areg,Z,SelR,G); 15defparammultiplexer.k=n;16megaddsubnbit_adder(AddSubR,G,Breg,M,over_flow);17assign Z=Zreg;1819 /Define flip-flop and register20 a

21、lways (posedge Reset orposedge Clock)21if(Reset=1)22begin23Areg=0;24Breg=0;25Zreg=0;26SelR=0;27AddSubR=0;28 Overflow=0;29end30else31begin32Areg=A;33Breg=B;34Zreg=M;35SelR=Sel;36AddSubR=AddSub;37 Overflow3* ArwitSynlhMis 5tf.tngs T krihg Amfc脚 SeitngjT inwQued T hnng苗 CImsk T rung Afm S ethr伊 CteX If

22、fiinfl Andzet RepoDesign As涵art Sitpr-hdfrpllLogk ArtstiLogc Ana2er Iriil 期 f jeePwwPl Pchww Analj2*r Ssttiifls SSMJinai2iFteiwfrw聪 liAarfM?.对I Type 3側 ID備nertw阳 VetJogiHOL.图 13图 144 结果编译设计,查看总结,图15.注意修改后的电路使用52个le。因为本例比较简单,使用LPM的优势并不明显。在更复杂的设 计中使用LPM,优势比较明显。当有合适的LPM时,建议使用。Flow StatusSiccessfuJ- - W

23、on Hay IT IT: 1O;C1 2019Qaartus- II Versicit9.1 Build 222 10/2i/2C09 SJ FuLl Vernonft&yiaiwrt ifameadder subtree tor?Top-level Enti ty i?ameadder&ubtrictDr2FamilyCycl&n IIBeviceEF2C35F672C&Tiiflirig Mo曲glwMet iirThig reTiirwieF.tsYsTotal logics52 f 33.216 ( i % )Total einst i onal fun亡t i efiESi f 216 ( V 1 范)Du卡iqted l?si c reistrs36 / 33,2 淖( 1)Total rtgistsri36Tit pi ai33 / 475 U1 M )bijr+qwl jin?0TotalMti/ 453,640 ( * )Embdd$-d9-bi I细理灯0 ; TO (05盼3 PHt) / A (0*)图 15Seealso

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!