VHDL双语教学第6章.ppt_第1页
VHDL双语教学第6章.ppt_第2页
VHDL双语教学第6章.ppt_第3页
VHDL双语教学第6章.ppt_第4页
VHDL双语教学第6章.ppt_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VHDL,Simulationram_1:static_ramportmap(cs_b,we_b,oe_b,abus(7downto0),dbus(15downto8);ram_2:static_ramportmap(cs_b,we_b,oe_b,abus(7downto0),dbus(23downto16);ram_3:static_ramportmap(cs_b,we_b,oe_b,abus(7downto0),dbus(31downto24);endgenerateram32;,RAM0,RAM1,RAM2,RAM3,8-bitBus,8-bitBus,8-bitBus,8-bitBus,32-bitBus,8-bitaddr,8-bitaddr,8-bitaddr,8-bitaddr,GenerateExample(2),ram32:foriin3downto0generateram:static_ramportmap(cs_b,we_b,oe_b,abus(7downto0),dbus(8*i+7downto8*i);endgenerateram32;,RAM0,RAM1,RAM2,RAM3,8-bitBus,8-bitBus,8-bitBus,8-bitBus,32-bitBus,8-bitaddr,8-bitaddr,8-bitaddr,8-bitaddr,Generate,Label:forParameterNameinRangegenerateConcurrentStatements.endgenerateLabel;,Label:ifConditiongenerateConcurrentStatements.endgenerateLabel;,GenerateExample(3),Adder,a(0)a(1)a(2)a(wid-1)b(0)b(1)b(2)b(wid-1),sum(0)sum(1)sum(2)sum(wid-1)carry,HA,FA,FA,FA,a(0)b(0)c_in(1)a(1)b(1)c_in(2)a(2)b(2)c_in(3)c_in(win-1)a(wid-1)b(wid-1),sum(0)sum(1)sum(2)sum(wid-1)carry,GenerateExample(4),adder:foriin0towid-1generatels_bit:ifi=0generatels_cell:HAportmap(a(0),b(0),sum(0),c_in(1);endgeneratelsbit;middle_bit:ifi0andiwid-1generatemiddle_cell:FAportmap(a(i),b(i),c_in(i),sum(i),c_in(i+1);endgeneratemiddle_bit;ms_bit:ifi=wid-1generatems_cell:FAportmap(a(i),b(i),c_in(i),sum(i),carry);endgeneratems_bit;endgenerateadder;,HA,FA,FA,FA,a(0)b(0)c_in(1)a(1)b(1)c_in(2)a(2)b(2)c_in(3)c_in(win-1)a(wid-1)b(wid-1),sum(0)sum(1)sum(2)sum(wid-1)carry,Agenda,GenerateAssertFunctionOverloadingFILEIO,Assert,DefinitionLabel:assertConditionreportStringExpressionseverityExpression;NoteThemessageiswrittenwhentheConditionisFalse!Thedefaultstringforreportclauseis“Assertionviolation”Thedefaultstringforseverityclauseis“ERROR”,ConcurrentAssertions,Label:processbeginassertconditionreporterror_stringseverityseverity_value;waitsensitivity_clause;endprocessLabel;,concurrentassertions,concurrentprocedurecalls,AssertExample(1),assertnot(Reset=0andSet=0)reportR-SconflictseverityFailure;,AssertExample(2),Severity_level,typeseverity_levelis(note,warning,error,failure);(Instandard.vhd),Agenda,GenerateAssertFunctionOverloadingFILEIO,FunctionOverloading,VHDLallowstwosubprogramstohavethesamename,providedthenumberorbasetypesofparametersdiffers,FunctionOverloading(Example1),functionFoo(value:bit)returnboolean;functionFoo(value:std_logic)returnboolean;,FunctionOverloading(Example2),function+(arg1,arg2:STD_LOGIC_VECTOR)returnSTD_LOGIC_VECTOR;function+(L,R:UNSIGNED)returnUNSIGNED;function+(L,R:SIGNED)returnSIGNED;,FunctionOverloading(Example3),FUNCTION+(arg1,arg2:STD_LOGIC_VECTOR)RETURNSTD_LOGIC_VECTORISCONSTANTml:INTEGER:=maximum(arg1length,arg2length);VARIABLElt:STD_LOGIC_VECTOR(1TOml);VARIABLErt:STD_LOGIC_VECTOR(1TOml);VARIABLEres:STD_LOGIC_VECTOR(1TOml);VARIABLEcarry:STD_LOGIC:=0;VARIABLEa,b,s1:STD_LOGIC;-Unsignedarithmeticadditionoftwovectors.MSBisLeft.ATTRIBUTEsynthesis_returnOFres:VARIABLEISADD;BEGINlt:=zxt(arg1,ml);rt:=zxt(arg2,ml);FORiINresreverse_rangeLOOPa:=lt(i);b:=rt(i);s1:=a+b;res(i):=s1+carry;carry:=(aANDb)OR(s1ANDcarry);ENDLOOP;RETURNres;END;,FUNCTION+(arg1,arg2:UNSIGNED)RETURNUNSIGNEDISCONSTANTml:INTEGER:=maximum(arg1length,arg2length);VARIABLElt:UNSIGNED(1TOml);VARIABLErt:UNSIGNED(1TOml);VARIABLEres:UNSIGNED(1TOml);VARIABLEcarry:STD_LOGIC:=0;VARIABLEa,b,s1:STD_LOGIC;-Unsignedarithmeticadditionoftwovectors.MSBisLeft.ATTRIBUTEsynthesis_returnOFres:VARIABLEISADD;BEGINlt:=zxt(arg1,ml);rt:=zxt(arg2,ml);FORiINresreverse_rangeLOOPa:=lt(i);b:=rt(i);s1:=a+b;res(i):=s1+carry;carry:=(aANDb)OR(s1ANDcarry);ENDLOOP;RETURNres;END;,FunctionOverloading(Example4),function+(a,b:byte)returnbyteisbeginreturnint_to_byte(byte_to_int(a)+byte_to_int(b);end+;X1000_0010+X0000_FFD0+(X1000_0010,X0000_FFD0),Agenda,GenerateAssertFunctionOverloadingFILEIOTextFileBinaryFile,Read/WriteTextFile,12123122341Awfe011100010-,DiskFile,1001011011,Linevariable,ReadLine(),Read(),DataObject,12123122341Awfe011100010-,DiskFile,1001011011,Linevariable,WriteLine(),Write(),DataObject,ReadFromTextFile,WriteToTextFile,Read/WriteTextFileSteps,Step1Defineuserdataobject,DataObjStep2DefineLineobject,LineObjvariableLineObj:line;Step2DefineTextFileobject,FileObjfileFileObject:textisinFileName;fileFileObject:textisoutFileName;Step4Read/WriteDataReadreadLine(FileObj,LineObj);read(LineObj,DataObj);WriteWrite(LineObj,DataObj);WriteLine(FileObj,LineObj);,Read/WriteTextFile(Example),libraryieee;useieee.std_logic_1164.all;usestd.textio.all;entitytext_file_readisendtext_file_read;architecturetext_file_read_aoftext_file_readisbeginprocessvariablebv:bit_vector(3downto0);variableln_in:line;variableln_out:line;filefile_in:textisintext1.dat;filefile_out:textisouttext2.dat;beginloopexitwhenendfile(file_in);readline(file_in,ln_in);read(ln_in,bv);write(ln_out,bv);writeline(file_out,ln_out);endloop;wait;endprocess;endtext_file_read_a;,11111010,text1.dat,11111010,text2.dat,WriteTextFile(Example1),libraryieee;useieee.std_logic_1164.all;usestd.textio.all;entitytext_file_writeisendtext_file_write;architecturetext_file_write_aoftext_file_writeisbeginprocessvariableln:line;variablebv:bit_vector(3downto0);fileout_file:textisouttext1.dat;beginbv:=1111;write(ln,bv);writeline(out_file,ln);bv:=1010;write(ln,bv);writeline(out_file,ln);wait;endprocess;endtext_file_write_a;,11111010,text1.dat,WriteTextFile(Example2),entityWrite_FileisendentityWrite_File;architecturearch_Write_FileofWrite_FileissignalA,B,C:Bit_vector(3downto0);beginA=1100;B=0110;C=0101;Monitor:processuseSTD.TEXTIO.all;fileF:TEXTisoutc:test.txt;-VHDL87variableL:LINE;beginWRITE(L,NOW,Left,10);WRITE(L,A,Right,5);WRITE(L,B,Right,5);WRITE(L,C,Right,5);WRITELINE(F,L);waitfor0ns;WRITE(L,NOW,Left,10);WRITE(L,A,Right,5);WRITE(L,B,Right,5);WRITE(L,C,Right,5);WRITELINE(F,L);waitfor1ns;WRITE(L,NOW,Left,10);WRITE(L,A,Right,5);WRITE(L,B,Right,5);WRITE(L,C,Right,5);WRITELINE(F,L);wait;endprocess;endarchitecturearch_Write_File;,0ns0000000000000ns1100011001011ns110001100101,10555,Agenda,GenerateAssertFunctionOverloadingFILEIOTextFileBinaryFile,Read/WriteBinaryFile,Step1DefineFileFormat(Storedatatype)DataTypeStep2Defineuserdataobject,DataObjStep3DefineFileobject,FileObjfileFileObject:DataTypeisinFileName;fileFileObject:DataTypeisoutFileName;Step4Definedatalengthvariable,LengthStep5Read/WriteDataread(FileObj,DataType,Length);write(FileObj,DataObject);,WriteBinaryFile,libraryieee;useieee.std_logic_1164.all;usestd.textio.all;entityfile_writeisendfile_write;,architecturefile_write_aoffile_writeistypebit_vecisfileofbit_vector;fileout_file:bit_vecisoutF1.dat;beginprocessvariablev:bit_vector(3downto0);beginv:=1101;write(out_file,v);waitfor100ms;v:=0001;write(out_file,v);waitfor100ms;v:=1111;write(out_file,v);waitfor100ms;wait;endprocess;endfile_write_a;,Read/WriteBinaryFile,architecturefile_read_aoffile_readistypebit_vecisfileofbit_vector;filein_file:bit_vecisinF1.dat;fileout_file:bit_vecisoutF2.dat;beginprocessvariablev:bit_vector(3downto0);variablelen:natural:=1;beginloopexitwhenendfile(in_file);read(in_file,v,len);write(out_file,v);waitfor100ms;endloop;wait;endprocess;endfile_read_a;,libraryieee;useieee.std_logic_1164.all;usestd.textio.all;entityfile_readisendfile_read;,DefinitionsForTextFile(1),packageTEXTIOis-TypedefinitionsfortextI/O:typeLINEisaccessSTRING;-ALINEisapointertoaSTRINGvalue.typeTEXTisfileofSTRING;-Afileofvariable-lengthASCIIrecords.typeSIDEis(RIGHT,LEFT);-Forjustifyingoutputdatawithinfields.subtypeWIDTHisNATURAL;-Forspecifyingwidthsofoutputfields.-Standardtextfiles:fileINPUT:TEXTopenREAD_MODEisSTD_INPUT;fileOUTPUT:TEXTopenWRITE_MODEisSTD_OUTPUT;-Inputroutinesforstandardtypes:procedureREADLINE(fileF:TEXT;L:outLINE);procedureREAD(L:inoutLINE;VALUE:outBIT;GOOD:outBOOLEAN);procedureREAD(L:inoutLINE;VALUE:outBIT);procedureREAD(L:inoutLINE;VALUE:outBIT_VECTOR;GOOD:outBOOLEAN);procedureREAD(L:inoutLINE;VALUE:outBIT_VECTOR);procedureREAD(L:inoutLINE;VALUE:outBOOLEAN;GOOD:outBOOLEAN);procedureREAD(L:inoutLINE;VALUE:outBOOLEAN);procedureREAD(L:inoutLINE;VALUE:outCHARACTER;GOOD:outBOOLEAN);,DefinitionsForTextFile(2),procedureREAD(L:inoutLINE;VALUE:outCHARACTER);procedureREAD(L:inoutLINE;VALUE:outINTEGER;GOOD:outBOOLEAN);procedureREAD(L:inoutLINE;VALUE:outINTEGER);procedureREAD(L:inoutLINE;VALUE:outREAL;GOOD:outBOOLEAN);procedureREAD(L:inoutLINE;VALUE:outREAL);procedureREAD(L:inoutLINE;VALUE:outSTRING;GOOD:outBOOLEAN);procedureREAD(L:inoutLINE;VALUE:outSTRING);procedureREAD(L:inoutLINE;VALUE:outTIME;GOOD:outBOOLEAN)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论