《可编程逻辑器件设计及应用》实验报告_第1页
《可编程逻辑器件设计及应用》实验报告_第2页
《可编程逻辑器件设计及应用》实验报告_第3页
《可编程逻辑器件设计及应用》实验报告_第4页
《可编程逻辑器件设计及应用》实验报告_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、Harbin Institute of Technology可编程逻辑器件设计及应用实验报告姓名: 同组人: 学号: 班级: 指导教师:张新潮院系: 电子与信息工程学院实验一 异步16分频 1、 实验内容1、 学习SIE安装过程2、 建立一个新的工程(cpld 9500系列)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、 形成下载文件二 实验结果三

2、实验结果讨论分析实验当中采用了四个分频器,将发送的脉冲信号进行分频,并实现十六分频。从仿真可以看出,实验结果和预期相符地很好。指导教师签字:实验二:电路图方法分层设计:全加器 1、 实验内容1、 建立一个新的工程(cpld 9500系列)2、 建立一个独立的电路图(All_ADD)3、 输入电路图 一位全加器4、建立测试波形方法仿真激励图形5、功能仿真见实验结果。8、 生成电路模块9、 利用电路模块设计8位全加器,(新电路图或者顶层电路图)10、 建立测试波形方法仿真激励图形11、 功能仿真仿真图见实验结果。二 实验结果2.1一位全加器仿真结果2.2 八位全加器功能仿真结果三 实验结果讨论分析

3、按照实验步骤依次建立相关模块,并进行仿真。从波形图中可以看出,对于单个全加器可以实现全加,对于八个全加器能够实现八位全加。实验结果符合要求。指导教师签字:3 实验三: Verilog语言方法设计:8位全加器 2、 实验内容1、 建立一个新的工程(cpld 9500系列)2、 建立一个Verilog模块(All_ADD8)3、 输入全加器module ALL_Addr8(A, B, CI, SUM, CY); input 7:0 A; input 7:0 B; input CI; output 7:0 SUM; output CY;assign CY,SUM=A+B+CI;endmodule4、

4、建立测试波形方法仿真激励图形5、功能仿真见实验结果。6、 建立Verilog测试模块自动建立后,添加/ Wait 100 ns for global reset to finish#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 = 1

5、64;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;/*分析结果* / Add stimulus here7、功能仿真仿真结果见实验结果。8、8位可预置计数器(实验拓展)9、建立一个Verilog模块(Counter8) (学习原理,说明功能)module Counter8(D, CLK, PR, CLR,

6、 Q); input 7:0 D; input CLK; input PR; input CLR; output 7:0 Q; reg 7:0 Q=0;always (posedge CLK)beginif(PR=1) Q=D;else if(CLR=1) Q=0;else Q=Q+1;endendmodule10、自己建立仿真过程(波形+Verilog测试)1)波形仿真图见实验结果。2)verilog测试代码见图:二 实验结果2.1A = 85; B = 184;CI = 02.2 A = 215; B = 194;CI = 12.3 A = 225; B = 30;CI = 0 2.3 V

7、erilog测试仿真图结果实验程序:module ALL_ADD8(A, B, CI, SUM, CY); input 7:0 A; input 7:0 B; input CI; output 7:0 SUM; output CY; assign CY,SUM=A+B+CI;endmodulemodule counter8(D, CLK, PR, CLR, Q); input 7:0 D; input CLK; input PR; input CLR; output 7:0 Q; reg 7:0 Q=0;always (posedge CLK)beginif(PR=1) Q=D;else if

8、(CLR=1) Q=0;else Q=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位数码管显示及控制设计;

9、1.2实验过程1、 在上一工程基础上继续做a、 工程名称:MyProject1b、 选择器件:Spartan3E2、 建立LED显示模块(verilog)图4、LED显示模块l 功能说明:a、 数据输入:4bits; b、 数据输出;8bits;c、 功能:翻译16进制到7段LED显示(参照显示16进制数对照表)l 过程说明:a、 建立Verilog模块;b、 建立Verilog仿真;c、 验证模块正确性;3、 建立显示数据锁存分配模块(verilog)图5、数据所存模块l 功能说明:a、 数据输入:8bits。b、 CK:锁存信号,上升沿锁存输入数据c、 数据输出:锁存输出最后输入的两字节数

10、据,分别对应4位输出l 过程说明:a、 建立Verilog模块;b、 建立Verilog仿真;c、 验证模块正确性;d、 建立电路图方式顶层模块显示模块e、 联合验证;二 实验结果建立了如图所示的模块实验程序:LED显示部分:module ledshow(in, out); input 3:0 in; output reg7:0 out; always (*) case(in) 4h0:out=8h3f; 4h1:out=8h06; 4h2:out=8h5b; 4h3:out=8h4f; 4h4:out=8h66; 4h5:out=8h6d; 4h6:out=8h7d; 4h7:out=8h0

11、7; 4h8:out=8h7f; 4h9:out=8h6f; 4ha:out=8h77; 4hb:out=8h7c; 4hc:out=8h39; 4hd:out=8h5e; 4he:out=8h79; 4hf:out=8h47; endcase endmodule整体木块:module fgf(ck, datain, a, b, c, d); input ck; input 7:0 datain; output reg3:0 a=0; output reg3:0 b=0; output reg3:0 c=0; output reg3:0 d=0; always (posedge ck) beg

12、in a=c; b=d; c=datain7:4; d=datain3:0; endendmodule三 实验结果讨论分析建立相关模块,输入相应程序,编译运行。在输入端输入模拟信号,对LED显示模块的功能分析比较。我们发现在输入端输入四位信号,每当CK处于上升沿时,将会使输出端相应的低四位输出LED显示的对应二进制数,并且当输入端输入新的信号时,原先LED低四位二进制数将转移到高四位,并将低四位的二进制数转变为对应的新信号。实验结果表明,LED显示模块符合实验要求。指导教师签字:实验五 串行口设计 一、 实验内容1、 建立一个新的工程 a、 工程名称:MyProject1b、 选择器件:Spa

13、rtan3E2、 建立模式控制模块(verilog)图1 模式控制模块l 功能说明:a、 DataIn:控制数据输入、8bits;低4位用于选择波特率模式,最高位用于选择奇、偶校验是否有效;b、 WR:控制数据写入,1bit;上升沿锁存输入数据;c、 FreOut:波特率模式选择输出,DataIn低4位,由WR上升沿锁存保持;09变化;大于9不变化。d、 ModOut:奇、偶校验模式选择;DataIn最高位,由WR上升沿锁存保持;e、 默认值:FreOut =6;ModOu=1;l 过程说明:a、 建立Verilog模块;b、 建立Verilog仿真;c、 验证模块正确性;3、 建立波特率发生

14、器模块(verilog)图2 波特率发生模块l 功能说明:a、 FreSel:波特率控制数据输入、4bits;09变化,对应选择波特率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倍分频输出;l 过程说明:a、 建立Verilog模块;b、

15、建立Verilog仿真;c、 验证模块正确性;d、 建立电路图方式顶层模块Seriale、 连接波特率发生器模块和模式控制模块进行联合验证;4、 建立发送数据模块(verilog)图3 发送数据模块l 功能说明:a、 DataIn:发送数据输入、8bits;b、 WR:控制数据写入,1bit;上升沿锁存输入数据;写入后下一个CLK上升沿开始立即发送数据c、 CLK:时钟射入,对应波特率时钟;d、 Mod:模式输入,0对应无奇偶校验;1对应有奇偶校验;e、 TX:串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;f、 BUSY:空闲指示,当TX输出时为高,其它时间为低

16、;l 过程说明:a、 建立Verilog模块;b、 建立Verilog仿真;c、 验证模块正确性;d、 加入顶层模块Seriale、 进行联合验证;5、 建立接收数据模块(verilog)图4 接收数据模块l 功能说明:a、 RX:串行数据输入、1bits;b、 CLK:时钟输入,对应16倍波特率时钟。目的:提高采样率,在第一时刻发现起始脉冲;同时对每一位进行3次采样(时间平均),已剔出干扰;c、 Mod:模式输入,0对应无奇偶校验;1对应有奇偶校验;d、 TX:串行数据输出,平时高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;e、 DataOut:接收转换后数据;f、 EN:接收

17、完成使能,平时为第电平,接收完成后保持一个波特率周期高电平。g、 ERR:奇偶校验错误指示,平时为第电平,接收完成后保持一个波特率周期高电平。l 过程说明:a、 建立Verilog模块;b、 建立Verilog仿真;c、 验证模块正确性;d、 加入顶层模块Serial进行联合验证;二 实验结果1、 建立一个新的工程 c、 工程名称:MyProject1d、 选择器件:Spartan3E2、 建立模式控制模块(verilog)图5 模式控制模块(1)功能说明:d、 DataIn:控制数据输入、8bits;低4位用于选择波特率模式,最高位用于选择奇、偶校验是否有效;e、 WR:控制数据写入,1bi

18、t;上升沿锁存输入数据;f、 FreOut:波特率模式选择输出,DataIn低4位,由WR上升沿锁存保持;09变化;大于9不变化。g、 ModOut:奇、偶校验模式选择;DataIn最高位,由WR上升沿锁存保持;h、 默认值:FreOut =6;ModOu=1;(2)过程说明:d、 建立Verilog模块;e、 建立Verilog仿真;f、 验证模块正确性;(3)程序:module Ctr (DataIn, WR, FreOut, ModOut); input 7:0 DataIn; input WR; output 3:0 FreOut; output ModOut; reg 3:0 Fre

19、Out=6; reg ModOut=1; always (posedge WR) begin if(DataIn3:0=9) FreOut=DataIn3:0;ModOut=DataIn7 ; endendmodule(4)仿真结果:3、 建立波特率发生器模块(verilog)图6 波特率发生模块(1)功能说明:a、FreSel:波特率控制数据输入、4bits;09变化,对应选择波特率300、600、1200、1800、2400、4800、9600、14.4K、19.2K、28.8Kbps共10种变化。b、CLK:时钟射入,频率为22.1184MHz;c、CLK_S:对应波特率分频输出,根据F

20、reSel输入控制数据进行对应分频,对应模式有300、600、1200、1800、2400、4800、9600、14.4K、19.2K、28.8Kbpsd、CLK_S16:对应波特率16倍分频输出;(2)过程说明:f、 建立Verilog模块;g、 建立Verilog仿真;h、 验证模块正确性;i、 建立电路图方式顶层模块Serialj、 连接波特率发生器模块和模式控制模块进行联合验证;(3)程序:module Bot(FreSel, CLK, CLK_S16, CLK_S); input 3:0 FreSel; input CLK; output CLK_S16; output CLK_S;

21、 reg CLK_S16=0; reg CLK_S=0; reg 11:0 Counter=0; reg 4:0 Counter1=0; always (posedge CLK) begin Counter=Counter+1;if(FreSel=0 & Counter=2303) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=1 & Counter=1151) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=2 & Counter=575) beginCounter=0;CLK_S16=CL

22、K_S16;endelse if(FreSel=3 & Counter=383) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=4 & Counter=287) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=5 & Counter=143) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=6 & Counter=71) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=7 & Counter=4

23、7) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=8 & Counter=35) beginCounter=0;CLK_S16=CLK_S16;endelse if(FreSel=9 & Counter=23) beginCounter=0;CLK_S16=CLK_S16;end end always (posedge CLK_S16) beginCounter1=Counter1+1;if(Counter1=7)beginCounter1=0;CLK_S=CLK_S;endendendmodule(4)仿真结果:4、 建立发送数据模块(v

24、erilog)图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、 加入顶层模块Serialj、 进行联合验证;(3)程序:m

25、odule Tx (DataIn, WR, CLK, XMod, TX, BUSY); input 7:0 DataIn; input 3:0WR; input CLK; input XMod; output TX; output BUSY; reg READY=0; reg TX=1; reg BUSY=0; reg Data_Ready=0; reg 4:0Counter=0; reg SUM=0; always (posedge CLK) beginif(WR=0 & READY=0)beginREADY=1;TX=0;Counter=0;endelse if (Counter8)beg

26、inREADY=1;BUSY=1;TX=DataInCounter;SUM=SUM+DataInCounter;Counter=Counter+1;endelse if (Counter=8 & XMod=0)beginTX=1;BUSY=1;READY=1;Counter=Counter+1;endelse if (Counter=9 & XMod=0)beginCounter=0;BUSY=0;READY=0;endelse if (Counter=8 & XMod=1)beginTX=SUM;Counter=Counter+1;endelse if (Counter=9 & XMod=1

27、)beginTX=1;BUSY=1;READY=1;Counter=Counter+1;endelse if (Counter=10 & XMod=1)beginCounter=0;BUSY=0;READY=0;end endendmodule(4)仿真结果:5、 建立接收数据模块(verilog)图8 接收数据模块(1)功能说明:h、 RX:串行数据输入、1bits;i、 CLK:时钟输入,对应16倍波特率时钟。目的:提高采样率,在第一时刻发现起始脉冲;同时对每一位进行3次采样(时间平均),已剔出干扰;j、 Mod:模式输入,0对应无奇偶校验;1对应有奇偶校验;k、 TX:串行数据输出,平时

28、高电平,当有数据输入后,下一个CLK上升沿开始立即发送数据;l、 DataOut:接收转换后数据;m、 EN:接收完成使能,平时为第电平,接收完成后保持一个波特率周期高电平。n、 ERR:奇偶校验错误指示,平时为第电平,接收完成后保持一个波特率周期高电平。(2)过程说明:e、 建立Verilog模块;f、 建立Verilog仿真;g、 验证模块正确性;h、 加入顶层模块Seriali、 进行联合验证;(3)程序:module Rx (RX, CLK, XMod, DataOut, EN, ERR); input RX; input CLK; input XMod; output 7:0 Dat

29、aOut; output EN; output ERR; reg START=1;/start=0开始 reg END=0;/end=1结束 reg 7:0 DataOut=0; reg EN=0; reg ERR=0; reg 15:0 Storage=0; reg 4:0 Counter=0; reg 4:0 Counter1=0; reg 4:0 Counter2=0; reg SUM=0; reg D=0; always (posedge CLK) beginif(RX=0 & START=1)beginDataOut=0;START=0;Counter=0;Counter1=0;Co

30、unter2=0;endelse if(START=0 & ERR=0)beginif(Counter15 & Counter19)beginStorageCounter=RX;Counter=Counter+1;if(Counter=12)beginif(Counter1=0)beginif(Storage6=Storage7)beginSTART=Storage6;endelse if(Storage7=Storage8)beginSTART=Storage7;endelse if(Storage6=Storage8)beginSTART=Storage8;endendelse if(Co

31、unter1!=0)beginif(Counter1=7 & Counter215)beginEN=1;Counter20)beginEN=0;endif(Storage6=Storage7)beginDataOutCounter1-1=Storage6;endelse if(Storage7=Storage8)beginDataOutCounter1-1=Storage7;endelse if(Storage6=Storage8)beginDataOutCounter1-1=Storage8;endendSUM=SUM+DataOutCounter1;Counter1=Counter1+1;endendelse

温馨提示

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

评论

0/150

提交评论