- 1、本文档共223页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第四部分基本语句
卢庆莉 编写 Architecture gen_shift of shift is component dff port b( d , clk : in std_logic ; q : out std_logic ) ; end component ; signal z : std_logic_vector ( 0 to 4 ) ; Begin z (0) = a ; g1 : for i in 0 to 3 generate dffx : dff port map ( z ( i ) , clk , z ( i + 1 ) ) ; end generate ; b = z ( 4 ) ; end gen_shift ; 例三: Architecture long_way_shift of shift is component dff port ( d , clk : in std_logic ; q : out std_logic ) ; end component ; signal z : std_logic_vector ( 0 to 4 ) ; Begin z (0 ) = a ; dff1 : dff port map ( z (0) ,clk , z (1) ) ; dff2 : dff port map ( z (1) ,clk , z (2) ) ; dff3 : dff port map ( z (2) ,clk , z (3) ) ; dff4 : dff port map ( z (3) ,clk , z (4) ) ; b = z (4) ; End long_way_shift ; 从例二和例三比较可以看到,两者的区别仅仅在于前者用一条FOR_GENERATE语句替代了后面的4条port map语句,使程序更加简练了。而且改变 i 的取值范围,从而可描述任意长度的移位寄存器。 从例二可以发现,移位寄存器的输入端和输出端的信号连接是无法用FOR_GENERATE语句来实现的,只能用两条信号代入语句来完成。也就是说, FOR_GENERATE语句只能处理规则的构造体。但是,在大多数情况下,电路的两端(输入端和输出端)总是具有不规则性,无法用同一种结构表示。为解决这种不规则电路的统一描述方法,就可以采用IF_GENERATE语句。下面仍以一个任意长度的移位寄存器描述模块为例来加以说明。假如移位寄存器的输入为a ,输出信号为b ,时钟信号为clk,共有len 位。那么该移位寄存器描述的模块如例四所示。 例四:library ieeee ; use ieee.std_logic_1164.all ; entity shift is gereric
文档评论(0)