资源描述:
《常见数字电路设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一部分数字系统设计概论第二部分CPLD/FPGA第三部分VerilogHDL第四部分上机实验第三部分VerilogHDL一、初识VerilogHDL二、VerilogHDL语法基础三、VerilogHDL行为语句四、数字电路Verilog设计主要内容四、数字电路Verilog设计组合逻辑电路设计时序逻辑电路设计多层次结构电路设计目标:写简单电路读较为复杂电路掌握多层次结构电路设计基本方法例1:一、组合逻辑电路设计三种设计风格:结构描述(调用门元件)数据流描述(assign)行为描述(always过程语句)例1:一、组合逻辑电路设计notandor元件名称实例化名称(输出端口,输入端口)mod
2、ulemux4_1a(out,in1,in2,in3,in4,ct1,ct2);inputin1,in2,in3,in4,ct1,ct2;outputout;endmodulenot(nct1,ct1),(nct2,ct2);and(w,in1,nct1,nct2),(x,in2,nct1,ct2),(y,in3,ct1,nct2),(z,in4,ct1,ct2);or(out,w,x,y,z);结构描述:写例1:一、组合逻辑电路设计out=(in1&~ct1&~ct2)∣(in2&~ct1&ct2)∣(in3&ct1&~ct2)∣(in4&ct1&ct2)数据流描述modulemux4_1(
3、out,in1,in2,in3,in4,ct1,ct2);inputin1,in2,in3,in4,ct1,ct2;outputout;assignout=(in1&~ct1&~ct2)∣(in2&~ct1&ct2)∣(in3&ct1&~ct2)∣(in4&ct1&ct2);endmodule写行为描述modulemux4_1b(out,in1,in2,in3,in4,ct1,ct2);inputin1,in2,in3,in4,ct1,ct2;outputout;regout;always@()out=(in1&~ct1&~ct2)∣(in2&~ct1&ct2)∣(in3&ct1&~ct2)∣
4、(in4&ct1&ct2);endmodulein1orin2orin3orin4orct1orct2写例2:三态门(2)数据流描述(3)行为描述(1)结构描述assignout=en?in:’bz;regout;beginalways@(enorin)out=en?in:’bz;endbufif1b1(out,in,en);写例3:设计一个3线-8线译码器,输出低电平有效2case(in)3’b000:out=8’b11111110;3’b001:out=8’b11111101;3’b010:out=8’b11111011;3’b011:out=8’b11110111;3’b100:out=
5、8’b11101111;3’b101:out=8’b11011111;3’b110:out=8’b10111111;3’b111:out=8’b01111111;default:out =8 ’bx;endcasealways@(in)beginendreg[7:0]out;moduledecoder_38(out,in);output[7:0]out;input[2:0]in;endmodule写总线名称例4:设计一个3线-8线优先编码器,输入高电平有效,输出为原码always@(aorborcordoreorforgorh)beginif(h)outcode=3’b111;elseif(g
6、)outcode=3’b110;elseif(f)outcode=3’b101;elseif(e)outcode=3’b100;elseif(d)outcode=3’b011;elseif(c)outcode=3’b010;elseif(b)outcode=3’b001;elseif(a)outcode=3’b000;elseoutcode=3’bzzz;endreg[2:0]outcode;写练习1:采用VerilogHDLcase语句对半加器进行行为描述modulehalfadder(A,B,S,C);inputA,B;outputS,C;regS,C;always@(AorB)begin
7、case({A,B})2’b00:{C,S}=2’b00;2’b01:{C,S}=2’b01;2’b10:{C,S}=2’b01;2’b11:{C,S}=2’b10;endcaseendendmodule练习2:(作业)设计一个BCD码——七段数码显示译码器例5:说明如下电路的功能modulevoter7(pass,vote);outputpass;input[6:0]vote;integeri;