《可编程逻辑器件设计及应用》实验报告.docx

上传人:b****8 文档编号:10287323 上传时间:2023-02-09 格式:DOCX 页数:42 大小:1.97MB
下载 相关 举报
《可编程逻辑器件设计及应用》实验报告.docx_第1页
第1页 / 共42页
《可编程逻辑器件设计及应用》实验报告.docx_第2页
第2页 / 共42页
《可编程逻辑器件设计及应用》实验报告.docx_第3页
第3页 / 共42页
《可编程逻辑器件设计及应用》实验报告.docx_第4页
第4页 / 共42页
《可编程逻辑器件设计及应用》实验报告.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

《可编程逻辑器件设计及应用》实验报告.docx

《《可编程逻辑器件设计及应用》实验报告.docx》由会员分享,可在线阅读,更多相关《《可编程逻辑器件设计及应用》实验报告.docx(42页珍藏版)》请在冰豆网上搜索。

《可编程逻辑器件设计及应用》实验报告.docx

《可编程逻辑器件设计及应用》实验报告

HarbinInstituteofTechnology

 

可编程逻辑器件

设计及应用

实验报告

姓名:

同组人:

学号:

班级:

1105201

指导教师:

张新潮

院系:

电子与信息工程学院

实验一异步16分频

1、实验内容

1、学习SIE安装过程

2、建立一个新的工程(cpld9500系列)

3、输入电路图

4、建立测试波形方法仿真激励图形

5、功能仿真

6、建立引脚约束文件

NET"CLK"LOC="P6";

NET"CLR"LOC="P7";

NET"O1"LOC="P42";

NET"O2"LOC="P37";

NET"O3"LOC="P40";

NET"O4"LOC="P39";

7、形成下载文件

二实验结果

三实验结果讨论分析

实验当中采用了四个分频器,将发送的脉冲信号进行分频,并实现十六分频。

从仿真可以看出,实验结果和预期相符地很好。

 

指导教师签字:

实验二:

电路图方法分层设计:

全加器

1、实验内容

1、建立一个新的工程(cpld9500系列)

2、建立一个独立的电路图(All_ADD)

3、输入电路图一位全加器

4、建立测试波形方法仿真激励图形

5、功能仿真

见实验结果。

8、生成电路模块

9、利用电路模块设计8位全加器,(新电路图或者顶层电路图)

10、建立测试波形方法仿真激励图形

11、功能仿真

仿真图见实验结果。

二实验结果

2.1一位全加器仿真结果

2.2八位全加器功能仿真结果

三实验结果讨论分析

按照实验步骤依次建立相关模块,并进行仿真。

从波形图中可以看出,对于单个全加器可以实现全加,对于八个全加器能够实现八位全加。

实验结果符合要求。

指导教师签字:

3实验三:

Verilog语言方法设计:

8位全加器

2、实验内容

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;

endmodule

4、建立测试波形方法仿真激励图形

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;//******分析结果******

//Addstimulushere

 

7、功能仿真

仿真结果见实验结果。

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)

begin

if(PR==1)Q<=D;

elseif(CLR==1)Q<=0;

elseQ<=Q+1;

end

endmodule

10、自己建立仿真过程(波形+Verilog测试)

1)波形仿真图见实验结果。

2)verilog测试代码见图:

 

二实验结果

2.1A=85;B=184;CI=0

 

2.2A=215;B=194;CI=1

 

2.3A=225;B=30;CI=0

2.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;

endmodule

modulecounter8(D,CLK,PR,CLR,Q);

input[7:

0]D;

inputCLK;

inputPR;

inputCLR;

output[7:

0]Q;

reg[7:

0]Q=0;

always@(posedgeCLK)

begin

if(PR==1)Q<=D;

elseif(CLR==1)Q<=0;

elseQ<=Q+1;

end

 

endmodule

三实验结果讨论分析

依次按照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、工程名称:

MyProject1

b、选择器件:

Spartan3E

2、建立LED显示模块(verilog)

图4、LED显示模块

●功能说明:

a、数据输入:

4bits;

b、数据输出;8bits;

c、功能:

翻译16进制到7段LED显示(参照显示16进制数对照表)

●过程说明:

a、建立Verilog模块;

b、建立Verilog仿真;

c、验证模块正确性;

3、建立显示数据锁存分配模块(verilog)

图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;

endcase

endmodule

整体木块:

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)

begin

a<=c;

b<=d;

c<=datain[7:

4];

d<=datain[3:

0];

end

endmodule

三实验结果讨论分析

建立相关模块,输入相应程序,编译运行。

在输入端输入模拟信号,对LED显示模块的功能分析比较。

我们发现在输入端输入四位信号,每当CK处于上升沿时,将会使输出端相应的低四位输出LED显示的对应二进制数,并且当输入端输入新的信号时,原先LED低四位二进制数将转移到高四位,并将低四位的二进制数转变为对应的新信号。

实验结果表明,LED显示模块符合实验要求。

指导教师签字:

实验五串行口设计

一、实验内容

1、建立一个新的工程

a、工程名称:

MyProject1

b、选择器件:

Spartan3E

2、建立模式控制模块(verilog)

图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)

图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.8Kbps

d、CLK_S16:

对应波特率16倍分频输出;

●过程说明:

a、建立Verilog模块;

b、建立Verilog仿真;

c、验证模块正确性;

d、建立电路图方式顶层模块Serial

e、连接波特率发生器模块和模式控制模块进行联合验证;

4、建立发送数据模块(verilog)

图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、加入顶层模块Serial

e、进行联合验证;

5、建立接收数据模块(verilog)

图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、工程名称:

MyProject1

d、选择器件:

Spartan3E

2、建立模式控制模块(verilog)

图5模式控制模块

(1)功能说明:

d、DataIn:

控制数据输入、8bits;低4位用于选择波特率模式,最高位用于选择奇、偶校验是否有效;

e、WR:

控制数据写入,1bit;上升沿锁存输入数据;

f、FreOut:

波特率模式选择输出,DataIn低4位,由WR上升沿锁存保持;0—9变化;大于9不变化。

g、ModOut:

奇、偶校验模式选择;DataIn最高位,由WR上升沿锁存保持;

h、默认值:

FreOut=6;ModOu=1;

(2)过程说明:

d、建立Verilog模块;

e、建立Verilog仿真;

f、验证模块正确性;

(3)程序:

moduleCtr(DataIn,WR,FreOut,ModOut);

input[7:

0]DataIn;

inputWR;

output[3:

0]FreOut;

outputModOut;

reg[3:

0]FreOut=6;

regModOut=1;

always@(posedgeWR)

begin

if(DataIn[3:

0]<=9)

FreOut<=DataIn[3:

0];

ModOut<=DataIn[7];

end

endmodule

(4)仿真结果:

3、建立波特率发生器模块(verilog)

图6波特率发生模块

(1)功能说明:

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.8Kbps

d、CLK_S16:

对应波特率16倍分频输出;

(2)过程说明:

f、建立Verilog模块;

g、建立Verilog仿真;

h、验证模块正确性;

i、建立电路图方式顶层模块Serial

j、连接波特率发生器模块和模式控制模块进行联合验证;

(3)程序:

moduleBot(FreSel,CLK,CLK_S16,CLK_S);

input[3:

0]FreSel;

inputCLK;

outputCLK_S16;

outputCLK_S;

regCLK_S16=0;

regCLK_S=0;

reg[11:

0]Counter=0;

reg[4:

0]Counter1=0;

always@(posedgeCLK)

begin

Counter<=Counter+1;

if(FreSel==0&&Counter==2303)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==1&&Counter==1151)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==2&&Counter==575)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==3&&Counter==383)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==4&&Counter==287)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==5&&Counter==143)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==6&&Counter==71)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==7&&Counter==47)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==8&&Counter==35)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

elseif(FreSel==9&&Counter==23)begin

Counter<=0;

CLK_S16<=~CLK_S16;

end

end

always@(posedgeCLK_S16)

begin

Counter1<=Counter1+1;

if(Counter1==7)

begin

Counter1<=0;

CLK_S<=~CLK_S;

end

end

endmodule

(4)仿真结果:

4、建立发送数据模块(verilog)

图7发送数据模块

(1)功能说明:

g、DataIn:

发送数据输入、8bits;

h、WR:

控制数据写入,1bit;上升沿锁存输入数据;写入后下一个CLK上升沿开始立即发送数据

i、CLK:

时钟射入,对应波特率时钟;

j、Mod:

模式输入,0对应无奇偶校验;1对应有奇偶校验;

k、TX:

串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;

l、BUSY:

空闲指示,当TX输出时为高,其它时间为低;

(2)过程说明:

f、建立Verilog模块;

g、建立Verilog仿真;

h、验证模块正确性;

i、加入顶层模块Serial

j、进行联合验证;

(3)程序:

moduleTx(DataIn,WR,CLK,XMod,TX,BUSY);

input[7:

0]DataIn;

input[3:

0]WR;

inputCLK;

inputXMod;

outputTX;

outputBUSY;

regREADY=0;

regTX=1;

regBUSY=0;

regData_Ready=0;

reg[4:

0]Counter=0;

regSUM=0;

always@(posedgeCLK)

begin

if(WR==0&&READY==0)

begin

READY<=1;

TX<=0;

Counter<=0;

end

elseif(Counter<8)

begin

READY<=1;

BUSY<=1;

TX<=DataIn[Counter];

SUM=SUM+DataIn[Counter];

Counter<=Counter+1;

end

elseif(Counter==8&&XMod==0)

begin

TX<=1;

BUSY<=1;

READY<=1;

Counter<=Counter+1;

end

elseif(Counter==9&&XMod==0)

begin

Counter<=0;

BUSY<=0;

READY<=0;

end

elseif(Counter==8&&XMod==1)

begin

TX<=SUM;

Counter<=Counter+1;

end

elseif(Counter==9&&XMod==1)

begin

TX<=1;

BUSY<=1;

READY<=1;

Counter<=Counter+1;

end

elseif(Counter==10&&XMod==1)

begin

Counter<=0;

BUSY<=0;

READY<=0;

end

end

endmodule

(4)仿真结果:

5、建立接收数据模块(verilog)

图8接收数据模块

(1)功能说明:

h、RX:

串行数据输入、1bits;

i、CLK:

时钟输入,对应16倍波特率时钟。

目的:

提高采样率,在第一时刻发现起始脉冲;同时对每一位进行3次采样(时间平均),已剔出干扰;

j、Mod:

模式输入,0对应无奇偶校验;1对应有奇偶校验;

k、TX:

串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;

l、DataOut:

接收转换后数据;

m、EN:

接收完成使能,平时为第电平,接收完成后保持一个波特率周期高电平。

n、ERR:

奇偶校验错误指示,平时为第电平,接收完成后保持一个波

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1