可编程逻辑器件设计及应用实验报告Word格式.docx
- 文档编号:17150636
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:34
- 大小:2.46MB
可编程逻辑器件设计及应用实验报告Word格式.docx
《可编程逻辑器件设计及应用实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《可编程逻辑器件设计及应用实验报告Word格式.docx(34页珍藏版)》请在冰豆网上搜索。
1、建立一个新的工程(cpld9500系列)
2、建立一个独立的电路图(All_ADD)
3、输入电路图:
一位全加器
图2-1一位全加器
4、建立测试波形方法仿真激励图形
图2-2波形仿真激励
5、功能仿真
记录结果,分析正确性。
6、生成电路模块
图2-3模块建立
7、利用电路模块设计8位全加器,(新电路图或者顶层电路图)
图2-48位全加器(顶层电路图)
8、建立测试波形方法仿真激励图形
图2-58位全加器波形仿真激励
9、学习总线数据预置方式:
通过使用相同名字来对总线进行连接设置,和总线数据格式。
一位全加器功能仿真结果:
图2-6功能仿真结果
8位全加器功能仿真结果一(无进位):
图2-7功能仿真结果
8位全加器功能仿真结果二(有进位):
图2-8功能仿真结果
本次试验充分体现了模块化设计思想,首先我们运用库文件实现了一位全加器,也即实验中的ALL_ADD模块,在实现此模块后进行仿真分析,确定无误后,运用8个一位全加器实现实现8位全加器,考虑进位。
在实验中进一步熟悉了软件的使用流程和具体的实际操作如操作总线结构等基本操作,可谓知行合一。
实验三Verilog语言方法设计:
8位全加器
2、建立一个Verilog模块(All_ADD8)
图3-1建立一个新的verilog模块
3、输入全加器
图3-2输入全加器
测试波形一:
图3-3测试波形
测试波形二:
图3-4测试波形
6、建立Verilog测试模块
源代码如下:
7、功能仿真
进位结果。
理解掌握语言描述。
8、8位可预置计数器(试验扩展)
9、建立一个Verilog模块(Counter8)
`timescale1ns/1ps
moduleextentest_v;
reg[7:
0]D;
regCLK;
regCLR;
regPR;
wire[7:
0]Q;
extendexuut
(
.D(D),
.CLK(CLK),
.CLR(CLR),
.PR(PR),
.Q(Q)
);
parameterPERIOD=200;
alwaysbegin
CLK=1'
b0;
#(PERIOD/2)CLK=1'
b1;
#(PERIOD/2);
end
initialbegin
D=0;
CLR=0;
PR=0;
#100;
每隔100ns变换一次输入数据
PR=1;
D=17;
CLR=0;
end
endmodule
10、学习总线数据预置方式
11、自己建立仿真过程(波形+Verilog测试)
测试波形一结果:
图3-5仿真测试结果
测试波形二结果:
图3-6仿真测试结果
文件测试结果:
图3-7仿真测试结果
更改数据测试结果:
图3-8仿真测试结果
本次试验与上次试验的不同之处在于:
上次试验是通过库文件链接电路图先实现1位全加器,在此基础上运用8个1位全加器按照逻辑链接在一起实现8位全加器,而在本次试验中,我们运用的是Verilog语言实现,个人感觉这种更加简单清楚,首先是这种方法省去了电路链接的麻烦,其次是它的实现过程中只需要编程实现模块即可,不用先生成1位全加器,然后再去实现8位全加器,编程仿真实现想要的结果后可以直接生成8位全加器模块,操作极为简单。
实验四LED显示模块设计
1、在上一工程基础上继续做
a、工程名称:
MyProject1
b、选择器件:
Spartan3E
2、建立LED显示模块(verilog)
图4-1LED显示模块
●功能说明:
a、数据输入:
4bits;
b、数据输出;
8bits;
c、功能:
翻译16进制到7段LED显示(参照显示16进制数对照表)
●过程说明:
a、建立Verilog模块;
b、建立Verilog仿真;
c、验证模块正确性;
3、建立显示数据锁存分配模块(verilog)
图4-2数据锁存模块
8bits。
b、CK:
锁存信号,上升沿锁存输入数据
c、数据输出:
锁存输出最后输入的两字节数据,分别对应4位输出
4、建立电路图方式顶层模块显示模块
图4-3顶层
5、联合验证;
输入波形一:
图4-4测试波形
得到的相应仿真结果图一:
图4-5仿真结果
输入波形二:
图4-6测试波形
得到的相应仿真波形结果图二:
图4-7仿真结果
本次试验依然使用的是Verilog语言,个人觉得实现的关键之处在于输入输出的对应,我们对照共阴极发光二极管的显示模式,为每一个输入通过编程实现其对应的输出即可。
本次试验更深入了解的Verilog编程语言,以及电路设计的模块化实现,在本次试验中引入了时钟,对时钟的生成与操作有了初步的了解为下一次试验打下了基础,与此同时,我还学习到了Verilog语言一些特有的编程规则。
实验五串行口设计
预备知识:
串行通信:
数据一位一位次序发送或接收。
异步通信:
它用一个起始位表示字符的开始,用停止位表示字符的结束。
其每帧的格式如下:
在一帧格式中,先是一个起始位0,然后是8个数据位,规定低位在前,高位在后,接下来是奇偶校验位(能省略),最后是停止位1。
用这种格式表示字符,则字符能一个接一个地传送。
无奇、偶校验的工作模式(10位):
有奇、偶校验的工作模式(11位):
(1)波特率:
在串行通信中,用波特率来描述数据的传输速度,所谓波特率,即每秒钟传送的二进制位数,其单位是bps(bitspersecond).它是衡量串行数据速度快慢的重要指标.
国际上规定的一个标准波特率系列:
110,300,600,1200,1800,2400,4800,9600,14.4K,19.2K,28.8K,33.6K,56Kbps
(2)奇偶校验:
对传送数据中1的个数进行校验,若二者不一致,则说明数据传送过程中出现了差错.奇偶校验的特点是按字符校验,数据传输速度将受到影响,一般只用于异步串行通信中。
实验过程:
1、建立一个新的工程
2、建立模式控制模块(verilog)
图5-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;
moduleModeCon(DataIn,WR,FreOut,ModOut);
input[7:
0]DataIn;
inputWR;
output[3:
0]FreOut;
outputModOut;
regModOut=1;
//ModOut初始值为1
reg[3:
0]FreOut=6;
//FreOut初始值为6
always@(posedgeWR)
begin
ModOut<
=DataIn[7];
if(DataIn[3:
0]<
9)
FreOut<
=DataIn[3:
0];
end
测试代码如下:
moduleModeConTest_v;
regWR;
wire[3:
wireModOut;
parameterPERIOD=100;
//value=时钟周期(单位ns)
WR=1'
#(PERIOD/2)WR=1'
//InstantiatetheUnitUnderTest(UUT)
ModeControluut(
.DataIn(DataIn),
.WR(WR),
.FreOut(FreOut),
.ModOut(ModOut)
);
DataIn=0;
WR=0;
//Wait100nsforglobalresettofinish
DataIn=16'
h12;
h23;
h44;
h96;
//Addstimulushere
3、建立波特率发生器模块(verilog)
图5-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倍分频输出;
d、建立电路图方式顶层模块Serial
e、连接波特率发生器模块和模式控制模块进行联合验证;
moduleFreqMod(FreSel,CLK,CLK_S16,CLK_S);
input[3:
0]FreSel;
inputCLK;
outputCLK_S16;
outputCLK_S;
regCLK_S=0;
regCLK_S16=0;
reg[16:
0]count=0;
0]count_16=0;
0]num=0;
0]num16=0;
always@(posedgeCLK)
if(FreSel==0)
num<
=36864;
//300
elseif(FreSel==1)
=18432;
//600
elseif(FreSel==2)
=9216;
//1200
elseif(FreSel==3)
=6144;
//1800
elseif(FreSel==4)
=4608;
//2400
elseif(FreSel==5)
=2304;
//4800
elseif(FreSel==6)
=1152;
//9600
elseif(FreSel==7)
=768;
//14.4k
elseif(FreSel==8)
=576;
//19.2k
elseif(FreSel==9)
=384;
//28.8k
count<
=count+1;
num16<
=num/(16);
count_16=count_16+1;
if(count>
=num)
CLK_S<
=~CLK_S;
count<
=0;
if(count_16>
=num16)
CLK_S16<
=~CLK_S16;
count_16<
moduleFreqModTest_v;
//Inputs
//Outputs
wireCLK_S16;
wireCLK_S;
CLK=1'
BitProduceruut(
.FreSel(FreSel),
.CLK_S16(CLK_S16),
.CLK_S(CLK_S)
//InitializeInputs
FreSel=1001;
4、建立发送数据模块(verilog)
图5-3发送数据模块
发送数据输入、8bits;
写入后下一个CLK上升沿开始立即发送数据
c、CLK:
时钟射入,对应波特率时钟;
d、Mod:
模式输入,0对应无奇偶校验;
1对应有奇偶校验;
e、TX:
串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;
f、BUSY:
空闲指示,当TX输出时为高,其它时间为低;
d、加入顶层模块Serial
e、进行联合验证;
moduleTxMod(DataIn,WR,CLK,Mod,TX,BUSY);
inputMod;
outputTX;
outputBUSY;
regTx=1;
regBusy=0;
0]data=0;
regflag=0;
0]count=1;
regnum=0;
data<
=DataIn;
num<
=data[0]+data[1]+data[2]+data[3]+data[4]+data[5]+data[6]+data[7];
flag<
=1;
if(flag==1)
Busy<
if(count==1)
Tx<
elseif(count==2)
=data[0];
elseif(count==3)
=data[1];
elseif(count==4)
=data[2];
elseif(count==5)
=data[3];
elseif(count==6)
=data[4];
elseif(count==7)
=data[5];
elseif(count==8)
=data[6];
elseif(count==9)
=data[7];
elseif(count==10)
if(Mod==0)
elseif(Mod==1)
Tx<
=num;
flag<
else
Tx=1;
Busy=0;
5、建立发送数据模块(verilog)
图5-4发送数据模块
a、RX:
串行数据输入、1bits;
时钟输入,对应16倍波特率时钟。
目的:
提高采样率,在第一时刻发现起始脉冲;
同时对每一位进行3次采样(时间平均),已剔出干扰;
c、Mod:
d、TX:
e、DataOut:
接收转换后数据;
f、EN:
接收完成使能,平时为第电平,接收完成后保持一个波特率周期高电平。
g、ERR:
奇偶校验错误指示,平时为第电平,接收完成后保持一个波特率周期高电平。
进行联合验证;
(1)模式选择模块
在Mod=1时,进行如下仿真波形设置:
图5-5测试波形设置
得到如下仿真结果:
图5-6仿真结果
在Mod=0时,进行如下仿真波形设置:
图5-7测试波形设置
图5-8仿真结果
在FreOut=6;
ModOut=1默认值时,设置仿真测试波形如下:
图5-9测试波形设置
得到仿真结果如下:
图5-10仿真结果
(2)波特率发生模块
仿真波形设置如下:
图5-11测试波形设置
仿真结果如下:
图5-12仿真结果
(3)数据发送模块
仿真测试输入波形如下:
图5-13测试波形设置
图5-14仿真结果
(4)接收模块
测试波形设置如下:
图5-15测试波形设置
仿真结果如下:
图5-16仿真结果
图5-17仿真结果
(5)联合仿真验证
由上述四个模块构成的顶层文件如下图所示:
图5-18顶层文件
对其进行波形仿真验证,测试波形设置如下图:
图5-19测试波形
图5-20测试波形
测试结果如下:
图5-21仿真结果
图5-22仿真结果
实验中的串行口模块由4个基本模块组成,分别是模式控制模块、波特率产生模块、接收模块和发送模块,本次试验令我收获最大的地方就是就是对设计流程的逐步熟悉,从模式控制模块、波特率控制模块、接收模块到发送模块一步一步实现,在每一步仿真验证后最终将每个部分合在一起实现本次试验。
本次试验耗时时间最长,前期的预备工作及其重要,多和同学讨论最终才能顺利完成本次试验。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程 逻辑 器件 设计 应用 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)