目录1.VerilogLanguage1.1Basics1.1.1Simplewire1.1.2fourwires1.1.3Inverter1.1.4ANDgate 1.1.5Norgate1.1.6Xnorgate1.1.7Wiredecl1.1.874581.2 Vectors1.2.1Vectors1.2.2Vectorsinmoredetail1.2.3Vectorpartselect1.2.4Bitwiseoperators1.2.5Four-inputgates1.2.6Vectorconcatenationoperator1.2.7Vectorreversal11.2.8Repl
目录1.VerilogLanguage1.1Basics1.1.1Simplewire1.1.2fourwires1.1.3Inverter1.1.4ANDgate 1.1.5Norgate1.1.6Xnorgate1.1.7Wiredecl1.1.874581.2 Vectors1.2.1Vectors1.2.2Vectorsinmoredetail1.2.3Vectorpartselect1.2.4Bitwiseoperators1.2.5Four-inputgates1.2.6Vectorconcatenationoperator1.2.7Vectorreversal11.2.8Repl
挺早以前就刷了里面一些题,结果不知道为啥登录账号刷题记录又没了,强迫症又让我不想从中间开始刷。既然如此,那就从头开始刷吧。QWQStepone第一题,没啥好说的。moduletop_module(outputone);//Insertyourcodehereassignone=1'b1;endmoduleZero同样没啥好说的。moduletop_module(outputzero);//Modulebodystartsaftersemicolonassignzero=1'b0;endmoduleWireassign赋值。moduletop_module(inputin,outputout);
挺早以前就刷了里面一些题,结果不知道为啥登录账号刷题记录又没了,强迫症又让我不想从中间开始刷。既然如此,那就从头开始刷吧。QWQStepone第一题,没啥好说的。moduletop_module(outputone);//Insertyourcodehereassignone=1'b1;endmoduleZero同样没啥好说的。moduletop_module(outputzero);//Modulebodystartsaftersemicolonassignzero=1'b0;endmoduleWireassign赋值。moduletop_module(inputin,outputout);
Bugsmux2原本代码的逻辑是反的,这不是坑人吗。moduletop_module(inputsel,input[7:0]a,input[7:0]b,output[7:0]out);assignout=({8{sel}}&a)|({8{~sel}}&b);endmoduleBugsnand3五输入的与门现在要实现三输入的与非门,多余的门可以输入1并将输出取反。moduletop_module(inputa,inputb,inputc,outputout);//wireout_n;andgateinst1(out_n,a,b,c,1'b1,1'b1);assignout=~out_n;endm
Bugsmux2原本代码的逻辑是反的,这不是坑人吗。moduletop_module(inputsel,input[7:0]a,input[7:0]b,output[7:0]out);assignout=({8{sel}}&a)|({8{~sel}}&b);endmoduleBugsnand3五输入的与门现在要实现三输入的与非门,多余的门可以输入1并将输出取反。moduletop_module(inputa,inputb,inputc,outputout);//wireout_n;andgateinst1(out_n,a,b,c,1'b1,1'b1);assignout=~out_n;endm
Vector0向量赋值。moduletop_module(inputwire[2:0]vec,outputwire[2:0]outv,outputwireo2,outputwireo1,outputwireo0);//Modulebodystartsaftermoduledeclarationassignoutv=vec;assigno2=vec[2];assigno1=vec[1];assigno0=vec[0];endmoduleVector1注意使用未声明的接口会隐式地生成一个1bit的wire变量,加一个`default_nettypenone可以不隐式声明,从而找到一些隐藏的bug。
Vector0向量赋值。moduletop_module(inputwire[2:0]vec,outputwire[2:0]outv,outputwireo2,outputwireo1,outputwireo0);//Modulebodystartsaftermoduledeclarationassignoutv=vec;assigno2=vec[2];assigno1=vec[1];assigno0=vec[0];endmoduleVector1注意使用未声明的接口会隐式地生成一个1bit的wire变量,加一个`default_nettypenone可以不隐式声明,从而找到一些隐藏的bug。
Module模块例化的两种方式:按端口位置例化、按端口名例化。moduletop_module(inputa,inputb,outputout);mod_ainstance1(.in1(a),.in2(b),.out(out));endmoduleModulepos按端口顺序例化。moduletop_module(inputa,inputb,inputc,inputd,outputout1,outputout2);mod_ainst(out1,out2,a,b,c,d);endmoduleModulename按端口名例化moduletop_module(inputa,inputb,inputc
Module模块例化的两种方式:按端口位置例化、按端口名例化。moduletop_module(inputa,inputb,outputout);mod_ainstance1(.in1(a),.in2(b),.out(out));endmoduleModulepos按端口顺序例化。moduletop_module(inputa,inputb,inputc,inputd,outputout1,outputout2);mod_ainst(out1,out2,a,b,c,d);endmoduleModulename按端口名例化moduletop_module(inputa,inputb,inputc