- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
LPM宏函数使用
LPM函数 4位查表式乘法器设计 ROM的初始化 在ROM的设计中,必须要预先设置好数据存储文件,这是一种以.mif为后缀的文本文件,在任何文本编辑器中,按如下文件格式写入: DEPTH = 16; 字线数量 WIDTH = 4; 位线数量 ADDRESS_RADIX = HEX; 地址与数据的表达类型 DATA_RADIX = HEX; 可以选择:HEX OCT DEC BIN CONTENT 存储内容 地址 :数据; BEGIN [0..F] : 3; 2 : 4 5 6 7; 8 : F E 5; END ; EAB是在输入、输出口上带有寄存器的RAM块,利用它可以非常方便地实现一些规模不太大的ROM、RAM、双端口RAM和FIFO等功能。 EP1K中的EAB是FPGA中的嵌入式阵列块,主要可以用来做存储器之类的东西,如RAM、ROM、FIFO等。在用LPM宏单元做RAM存储器时,可以用EAB来做,也可以不用EAB做。如果不用EAB来做,那么LPM就会调用FPGA中的触发器来实现存储器的功能,这样做非常浪费FPGA资源。因此,通常情况下都是选择用EAB来做各种存储器的。 用MAX-PLUS II设置RAM/rom可以有两种方法。(1)用lpm_ram调用宏参数库来设置,默认采用EAB来实现RAM;(2)也可以用megawizard Plug-in menager来设置RAM参数,在选择实现方法时会出现提示:口implement with logic cell only, even if the device contains EABs,若在口中打勾则表示一定不用EAB做RAM,一般不提倡这样做。 例:4位查表式乘法器设计 功能:将两个4位二进制数A和B相乘,输出乘积结果C(8位二进制数); 设计方案:采用256x8位ROM实现,8位地址输入(高4位为A,低4位为B),256个存储字;8位数据输出; 数据存储文件(krom2.mif): 填写相应的乘法表即可 depth = 256; width = 8; address_radix = hex; data_radix = hex; content begin [00..0f] : 00 ; 10 : 00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f; 20 : 00 02 04 06 08 0a 0c 0e 10 12 14 16 18 1a 1c 1e; 30 : 00 03 06 09 0c 0f 12 15 18 1b 1e 21 24 27 2a 2d; 40 : 00 04 08 0c 10 14 18 1c 20 24 28 2c 30 34 38 3c; 50 : 00 05 0a 0f 14 19 1d 23 28 2d 32 37 3c 41 46 4b; 60 : 00 06 0c 12 18 1e 24 2a 30 36 3c 42 48 4e 54 5a; 70 : 00 07 0e 15 1c 23 2a 31 38 3f 46 4d 54 5b 62 69; 80 : 00 08 10 18 20 28 30 38 40 48 50 58 60 68 70 78; 90 : 00 09 12 1b 24 2d 36 3f 48 51 5a 63 6c 75 7e 87; a0 : 00 0a 14 1e 28 32 3c 46 50 5a 64 6e 78 82 8c 96; b0 : 00 0b 16 21 2c 37 42 4d 58 63 6e 79 84 8f 9a a5; c0 : 00 0c 18 24 30 3c 48 54 60 6c 78 84 90 9c a8 b4; d0 : 00 0d 1a 27 34 41 4e 5b 68 75 82 8f 9c a9 b6 c3; e0 : 00 0e 1c 2a 38 46 54 62 70 7e 8c 9a a8 b6 c4 d2; f0 : 00 0f 1e 2d 3c 4b 5a 66 78 87 96 a5 b4 c3 d2 e1; end; 1.利用图形法 第2图说明:输入是地址,地址里面的内容就是x,y乘积的结果 library ieee; use ieee.std_logic_1164.all; library lpm; use lpm.lpm_components.all; entity romlpm is port(address: in std_logic_vector(7 downto 0); inclock: in
文档评论(0)