资源描述:
《逻辑电路设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十二讲逻辑电路设计主要内容逻辑电路的组成基本的组合逻辑基本的时序逻辑双向移位寄存器乘累加器的设计奇数分频与小数分频数字跑表的设计4位频率计的设计简易微处理器的设计11.1数字系统的构成组合逻辑(无记忆)时序逻辑(有记忆)组合逻辑电路加法器乘法器/除法器编码器/译码器缓冲器逻辑开关总线逻辑运算电路时序逻辑电路计数器同步有限状态机运算控制器总线分配器总结:用寄存器和组合逻辑一起组成的有记忆逻辑电路,能与时钟配合产生精确的控制信号。组合逻辑设计要点组合逻辑的两种VerilogHDL表示:-用assign语句:assignq=(al==1?)d:0;
2、-用always块:always@(alord)beginif(al==1)q=d;elseq=0;end组合逻辑设计要点组合逻辑的两种VerilogHDL表示:-用always块时,没注意加else语句:如:always@(alord)beginif(al==1)q=d;end则:此时生成的不是纯组合逻辑,因为当al==0时,q能保留原来的值,所以生成的电路中有锁存器。组合逻辑设计要点用always块时,必须注意电平敏感的信号表是否完全,如:always@(aorborcord)beginout=(a&b&c)
3、(d&e);end此时生成的不
4、是纯组合逻辑,因为当e变化时,out不能立即跟着变化。只有当a或b或c或d变化时e的变化后果才显示出来。可见需要有一个寄存器来储存e的变化。时序逻辑设计要点时序逻辑的VerilogHDL表示:-用always:如:always@(posedgeclock)if(!reset)do_reset;elsecase(state)state_1:do_state_1;时序逻辑设计要点(继续上页)state_2:do_state_2;state_3:do_state_3;state_4:do_state_4;state_5:do_state_5;defa
5、ult:state<=xx;endcase时序逻辑设计要点(继续上页)taskdo_reset;beginReset_Every_Register;Prepare_For_Next_State;endendtask时序逻辑设计要点(继续上页)taskdo_state_1;beginif(Condition_Is_True)Switch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtask时序逻辑设计要点(继续上页)taskdo_stat
6、e_2;beginif(Condition_Is_True)Switch_Proper_Control_Logic;Prepare_For_Next_State;elseStay_In_Original_State;endendtask介绍常用组合逻辑电路的设计和描述。11.2基本组合电路设计例11.1基本门电路门级结构描述modulegate1(F,A,B,C,D);inputA,B,C,D;outputF;nand(F1,A,B);//调用门元件and(F2,B,C,D);or(F,F1,F2);endmodule数据流描述modulega
7、te2(F,A,B,C,D);inputA,B,C,D;outputF;assignF=(A&B)
8、(B&C&D);//assign持续赋值endmodule行为描述modulegate3(F,A,B,C,D);inputA,B,C,D;outputF;regF;always@(AorBorCorD)//过程赋值beginF=(A&B)
9、(B&C&D);endendmodule例11.2三态门1用bufif1关键字描述的三态门moduletri_1(in,en,out);inputin,en;outputout;triout;bufif1b1(
10、out,in,en);endmodule2用数据流方式描述moduletri_2(out,in,en);outputout;inputin,en;assignout=en?in:'bz;endmodule例11.3三态双向驱动器modulebidir(tri_inout,out,in,en,b);inouttri_inout;outputout;inputin,en,b;assigntri_inout=en?in:'bz;assignout=tri_inout^b;endmodule另一种描述方式modulebidir2(bidir,en,cl
11、k);inout[7:0]bidir;inputen,clk;reg[7:0]temp;assignbidir=en?temp:8'bz;always