HarbinInstituteofTechnology可编程逻辑器件设计及应用实验报告姓名:同组人:学号:班级:1105201指导教师:张新潮院系:电子与信息工程学院实验一异步16分频一、实验内容1、学习SIE安装过程2、建立一个新的工程(cpld9500系列)3、输入电路图4、建立测试波形方法仿真激励图形5、功能仿真6、建立引脚约束文件NETCLKLOC=P6;NETCLRLOC=P7;NETO1LOC=P42;NETO2LOC=P37;NETO3LOC=P40;NETO4LOC=P39;7、形成下载文件二实验结果三实验结果讨论分析实验当中采用了四个分频器,将发送的脉冲信号进行分频,并实现十六分频。从仿真可以看出,实验结果和预期相符地很好。指导教师签字:实验二:电路图方法分层设计:全加器一、实验内容1、建立一个新的工程(cpld9500系列)2、建立一个独立的电路图(All_ADD)3、输入电路图一位全加器4、建立测试波形方法仿真激励图形5、功能仿真见实验结果。8、生成电路模块9、利用电路模块设计8位全加器,(新电路图或者顶层电路图)10、建立测试波形方法仿真激励图形11、功能仿真仿真图见实验结果。二实验结果2.1一位全加器仿真结果2.2八位全加器功能仿真结果三实验结果讨论分析按照实验步骤依次建立相关模块,并进行仿真。从波形图中可以看出,对于单个全加器可以实现全加,对于八个全加器能够实现八位全加。实验结果符合要求。指导教师签字:3实验三:Verilog语言方法设计:8位全加器二、实验内容1、建立一个新的工程(cpld9500系列)2、建立一个Verilog模块(All_ADD8)3、输入全加器moduleALL_Addr8(A,B,CI,SUM,CY);input[7:0]A;input[7:0]B;inputCI;output[7:0]SUM;outputCY;assign{CY,SUM}=A+B+CI;endmodule4、建立测试波形方法仿真激励图形5、功能仿真见实验结果。6、建立Verilog测试模块自动建立后,添加//Wait100nsforglobalresettofinish#100;A=5;B=4;CI=1;#100;A=15;B=14;CI=0;#100;A=15;B=114;CI=1;#100;A=25;B=124;CI=0;#100;A=35;B=134;CI=1;#100;A=45;B=144;CI=0;#100;A=55;B=154;CI=1;#100;A=65;B=164;CI=0;#100;A=75;B=174;CI=1;#100;A=85;B=184;CI=0;//******分析结果******#100;A=215;B=194;CI=1;//******分析结果******#100;A=225;B=30;CI=0;//******分析结果******#100;A=235;B=20;CI=1;//******分析结果******//Addstimulushere7、功能仿真仿真结果见实验结果。8、8位可预置计数器(实验拓展)9、建立一个Verilog模块(Counter8)(学习原理,说明功能)moduleCounter8(D,CLK,PR,CLR,Q);input[7:0]D;inputCLK;inputPR;inputCLR;output[7:0]Q;reg[7:0]Q=0;always@(posedgeCLK)beginif(PR==1)Q=D;elseif(CLR==1)Q=0;elseQ=Q+1;endendmodule10、自己建立仿真过程(波形+Verilog测试)1)波形仿真图见实验结果。2)verilog测试代码见图:二实验结果2.1A=85;B=184;CI=02.2A=215;B=194;CI=12.3A=225;B=30;CI=02.3Verilog测试仿真图结果实验程序:moduleALL_ADD8(A,B,CI,SUM,CY);input[7:0]A;input[7:0]B;inputCI;output[7:0]SUM;outputCY;assign{CY,SUM}=A+B+CI;endmodulemodulecounter8(D,CLK,PR,CLR,Q);input[7:0]D;inputCLK;inputPR;inputCLR;output[7:0]Q;reg[7:0]Q=0;always@(posedgeCLK)beginif(PR==1)Q=D;elseif(CLR==1)Q=0;elseQ=Q+1;endendmodule三实验结果讨论分析依次按照A=85;B=184;CI=0;A=215;B=194;CI=1;A=225;B=30;CI=0;对建立好的模块进行仿真,从仿真图可以看出,实现了八位全加器的仿真以及可预置八位全加仿真,并且建立了Verilog进行仿真。实验结果与实验要求符合地很好。指导教师签字:实验四LED显示模块设计一、实验内容1.1实验任务1、进一步学习FPGA工程及实际应用2、学习自顶向下的模块化设计过程3、学习LED数码管的显示机理4、实现4位数码管显示及控制设计;1.2实验过程1、在上一工程基础上继续做a、工程名称:MyProject1b、选择器件:Spartan3E2、建立LED显示模块(verilog)LED译码显示模块(最高4位)8bit4bit图4、LED显示模块功能说明:a、数据输入:4bits;b、数据输出;8bits;c、功能:翻译16进制到7段LED显示(参照显示16进制数对照表)过程说明:a、建立Verilog模块;b、建立Verilog仿真;c、验证模块正确性;3、建立显示数据锁存分配模块(verilog)显示数据锁存分配模块8bitCK4bit4bit4bit4bit次低4位低4位高4位最高4位图5、数据所存模块功能说明:a、数据输入:8bits。b、CK:锁存信号,上升沿锁存输入数据c、数据输出:锁存输出最后输入的两字节数据,分别对应4位输出过程说明:a、建立Verilog模块;b、建立Verilog仿真;c、验证模块正确性;d、建立电路图方式顶层模块显示模块e、联合验证;二实验结果建立了如图所示的模块实验程序:LED显示部分:moduleledshow(in,out);input[3:0]in;outputreg[7:0]out;always@(*)case(in)4'h0:out=8'h3f;4'h1:out=8'h06;4'h2:out=8'h5b;4'h3:out=8'h4f;4'h4:out=8'h66;4'h5:out=8'h6d;4'h6:out=8'h7d;4'h7:out=8'h07;4'h8:out=8'h7f;4'h9:out=8'h6f;4'ha:out=8'h77;4'hb:out=8'h7c;4'hc:out=8'h39;4'hd:out=8'h5e;4'he:out=8'h79;4'hf:out=8'h47;endcaseendmodule整体木块:modulefgf(ck,datain,a,b,c,d);inputck;input[7:0]datain;outputreg[3:0]a=0;outputreg[3:0]b=0;outputreg[3:0]c=0;outputreg[3:0]d=0;always@(posedgeck)begina=c;b=d;c=datain[7:4];d=datain[3:0];endendmodule三实验结果讨论分析建立相关模块,输入相应程序,编译运行。在输入端输入模拟信号,对LED显示模块的功能分析比较。我们发现在输入端输入四位信号,每当CK处于上升沿时,将会使输出端相应的低四位输出LED显示的对应二进制数,并且当输入端输入新的信号时,原先LED低四位二进制数将转移到高四位,并将低四位的二进制数转变为对应的新信号。实验结果表明,LED显示模块符合实验要求。指导教师签字:实验五串行口设计一、实验内容1、建立一个新的工程a、工程名称:MyProject1b、选择器件:Spartan3E2、建立模式控制模块(verilog)模式控制模块8141DataInWRFreOutModOut图1模式控制模块功能说明:a、DataIn:控制数据输入、8bits;低4位用于选择波特率模式,最高位用于选择奇、偶校验是否有效;b、WR:控制数据写入,1bit;上升沿锁存输入数据;c、FreOut:波特率模式选择输出,DataIn低4位,由WR上升沿锁存保持;0—9变化;大于9不变化。d、ModOut:奇、偶校验模式选择;DataIn最高位,由WR上升沿锁存保持;e、默认值:FreOut=6;ModOu=1;过程说明:a、建立Verilog模块;b、建立Verilog仿真;c、验证模块正确性;3、建立波特率发生器模块(verilog)波特率发生器模块1FreSelCLK_S411CLKCLK_S16图2波特率发生模块功能说明:a、FreSel:波特率控制数据输入、4bits;0—9变化,对应选择波特率300、600、1200、1800、2400、4800、9600、14.4K、19.2K、28.8Kbps共10种变化。b、CLK:时钟射入,频率为22.1184MHz;c、CLK_S:对应波特率分频输出,根据FreSel输入控制数据进行对应分频,对应模式有300、600、1200、1800、2400、4800、9600、14.4K、19.2K、28.8Kbpsd、CLK_S16:对应波特率16倍分频输出;过程说明:a、建立Verilog模块;b、建立Verilog仿真;c、验证模块正确性;d、建立电路图方式顶层模块Seriale、连接波特率发生器模块和模式控制模块进行联合验证;4、建立发送数据模块(verilog)发送数据模块1DataInBUSY811CLKTX1WR1Mod图3发送数据模块功能说明:a、DataIn:发送数据输入、8bits;b、WR:控制数据写入,1bit;上升沿锁存输入数据;写入后下一个CLK上升沿开始立即发送数据c、CLK:时钟射入,对应波特率时钟;d、Mod:模式输入,0对应无奇偶校验;1对应有奇偶校验;e、TX:串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;f、BUSY:空闲指示,当TX输出时为高,其它时间为低;过程说明:a、建立Verilog模块;b、建立Verilog仿真;c、验证模块正确性;d、加入顶层模块Seriale、进行联合验证;5、建立接收数据模块(verilog)接收数据模块1RXERR811CLKDataOut1ENMod1图4接收数据模块功能说明:a、RX:串行数据输入、1bits;b、CLK:时钟输入,对应16倍波特率时钟。目的:提高采样率,在第一时刻发现起始脉冲;同时对每一位进行3次采样(时间平均),已剔出干扰;c、Mod:模式输入,0对应无奇偶校验;1对应有奇偶校验;d、TX:串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;e、DataOut:接收转换后数据;f、EN:接收完成使能,平时为第电平,接收完成后保持一个波特率周期高电平。g、ERR:奇偶校验错误指示,平时为第电平,接收完成后保持一个波特率周期高电平。过程说明:a、建立Verilog模块;b、建立Verilog仿真;c、验证模块正确性;d、加入顶层模块Serial进行联合验证;二实验结果1、建立一个新的工程c、工程名称:MyProject1d、选择器件:Spartan3E2、建立模式控制模块(verilog)模式控制模块8141DataInWRFreOutModOut图5模式控制模块(1)功能说明:d、DataIn:控制数据输入、8bits;低4位用于选择波特率模式,最高位用于选择奇、偶校验是否有效;e、WR:控制数据写入,1bi