在中已经介绍了组合逻辑电路的实现.doc

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在中已经介绍了组合逻辑电路的实现

在第七讲中,已经介绍了组合逻辑电路的实现。组合逻辑电路的特点是:在任意时刻,电路产生的稳定输出仅与当前时刻的输入有关。时序逻辑电路则不同于它,其特点是:在任意时刻电路产生的稳定输出不仅与当前时刻的输入有关,而且还与电路过去的输入有关。本讲中将介绍时序逻辑电路的实现。 8.1 闪烁灯的实现[To top]   在目标板上,设计有一个10MHz的时钟源。假如直接把它输出到发光二级管LED,由于人眼的延迟性,我们将无法看到LED闪烁,认为它一直亮着。如果我们期望看到闪烁灯,就需要将时钟源的频率降低后再输出。因此,可以采用如图1所示的逻辑功能框图。 ?                   图1 闪烁灯的逻辑功能框图   其中,CLK表示10MHz的时钟源,作为输入;LED0-LED7表示发光二极管,作为输出;6、44、43、38、37、36、35、40和42是上述变量对应芯片XC9536的引脚。虚线框中的部分是CPLD设计,用于实现闪烁灯的功能。   如图1所示,在XC9536中,加入计数电路与判别电路。计数电路可用计数器实现。每来一个时钟脉冲CLK,计数器就加1。而每当判断出计数器达到某个数值时,就使得灯LED0-LED7的亮灭反转一次,即:周期性地输出高电平1和低电平0。这样设计也就相当于把10MHz的时钟源分频后再输出。如果最终要使得灯1s闪烁一次,即:输出1Hz的时钟脉冲,就需要把10MHz的时钟经过107分频。根据上述分析,可以得到下面的Verilog-HDL描述。 /* 闪烁灯的Verilog-HDL描述 */ module LIGHT ( CLK, LED ); // 模块名及端口参数,范围至endmodule   input CLK;       // 输入端口定义,对应第6脚   output [7:0] LED;               // 输出端口定义,LED[0]-LED[7]分别对应第44、43、38、37、36、35、40和42脚   reg [7:0] LED;     // 输出端口定义为寄存器型   reg [22:0] buffer;   // 中间变量buffer定义为寄存器型   always @ ( posedge CLK )              // always语句,表示每当CLK的上升沿到来时,完成begin-end之间语句的操作     begin // 顺序语句,到end止       buffer = buffer +1; // 缓冲器buffer按位加1       if ( buffer == 23b11111111111111111111111)                // 判别buffer中的数值为(2^23-1)≈10^7时,做输出处理              //23表示以位计的数值长度,b表示二进制,11…1表示二进制的数字序列         begin           LED=~LED; // LED[0]-LED[7]反转一次,即:由0变为1,或由1变为0         end       end endmodule   把以上闪烁灯的描述,用WebPACK Project Navigator软件,生成目标文件,并通过下载电缆写入芯片XC9536中。然后,将芯片插到目标板上,即可看到闪烁灯的景象了。图2示出了下载过程中出现的引脚配置画面。 ?                    图2 闪烁灯的引脚配置画面 8.2 流水灯的实现[To top]   下面,做一个流水灯的设计。如果把流水做慢动作播放,可以想象到其实就是移动,即:把水块不断地向同一方向移动,而原来的水块保持不动,就形成了流水。同样,如果使得最右边的灯先亮;然后,通过移位,在其左侧的灯,由右向左依次点亮,而已经亮的灯又不灭,不就形成了向左的流水灯!   因此,同样可以采用如图1所示的逻辑功能框图。初始状态时,8个灯都不亮。每来一个时钟脉冲CLK,计数器就加1。每当判断出计数器中的数值达到107时,就会点亮一个灯,并进行移位。这样,依次点亮所有的灯,就形成了流水灯。而当8个灯都点亮时,需要一个操作使得所有的灯恢复为初始状态,即:灯都不亮。然后,再一次流水即可。如果是左移位,就出现向左流水的现象;反之,向右流水。根据上述分析,可以得到下面的Verilog-HDL描述。 /* 流水灯的Verilog-HDL描述* / module LEDWATER ( CLK, LED );  // 模块名及端口参数,范围至endmodule   input CLK;         // 输入端口定义,对应第6脚   output [7:0] LED;

您可能关注的文档

文档评论(0)

sunshaoying + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档