FPGA实验报告5 模4递增计数器(1500字)

来源:m.fanwen118.com时间:2021.7.14

Lab 5 模4递增计数器 集成1101班

1. 实验目的

熟悉用Quartus编译Verilog语言的方法。

掌握用Verilog HDL 语言描述模4递增计数器的方法。

学会FPGA I/O引脚分配和实现过程。

2. 实验内容

a)

b)

c)

d) 使用Verilog语言实现模4递增计数器。 使用Lab4中D或JK触发器作为模块单元。 得到仿真波形。 使用DE0开发板下载。

3. 代码分析

? 主模块实现对D_FF的调用和最后输出。输入时钟信号CP和控制

信号nCR,输出NQ0和NQ1,表示一个两位二进制数。

module counter (NQ0,NQ1,CP,nCR);

output NQ0,NQ1;

input CP,nCR;

wire Q0,Q1;

D_FF F0 (Q0,~Q0,CP,nCR);

D_FF F1 (Q1,~Q1,Q0,nCR);

assign NQ0=~Q0, NQ1=~Q1;

endmodule

? D_FF模块实现用D触发器计数。当Rd=0时,Q清零;当 Rd=1时,

在CP的上升沿,Q=D.

module D_FF (Q,D,CP,Rd);

output Q;

input D,CP,Rd;

reg Q;

always @(posedge CP or negedge Rd)

if (~Rd) Q <= 1'b0;

else Q <= D;

endmodule

4. 实验步骤

(1)打开Quartus9.1软件,选择“File=>New Project Wizard”,在弹出的窗口中输入项目的名称和存储位置。

FPGA实验报告5模4递增计数器

(2)单击两次Next后,选择实验板的具体型号。

FPGA实验报告5模4递增计数器

(3)在“File=>New”的窗口中选择建立Verilog文件。

FPGA实验报告5模4递增计数器

(4)单击OK后,在Quartus窗口的右方看到该文件,写入代码后选择“File=>Save”,将文件保存在与项目文件同样的位置即可。然后可以看到如下状态:

FPGA实验报告5模4递增计数器

(5)选择“Processing=》Start Compilation”开始编译,编译通过后可以查看生成的Report。

(6)选择“file->new->vector waveeform file”生成波形图,设置波形。

FPGA实验报告5模4递增计数器

(7)选择“processing-》generate functional simulation netlist”,再选择“processing=》Start simulation”,生成波形。

FPGA实验报告5模4递增计数器

(8)选择“assignment=》pins”设置引脚。

FPGA实验报告5模4递增计数器

(9)选择“Tools=>Programmer”,此时还没有在此项目中安装硬件。选择Hardware Setup安装硬件。因为DEO板是通过USB连接,故选择USB-Blaster。然后选择Close。

FPGA实验报告5模4递增计数器

FPGA实验报告5模4递增计数器

(10) 回到Programmer对话框,此时已经有硬件的相关信息。单击Start开始在DEO板上运行。

FPGA实验报告5模4递增计数器

5. 实验结果

在DEO开发板中测试,能实现预期结果。

输入CP接button0,nCR接sw0,输出接LEDG0和LEDG1。当保持nCR=1时,按button0,LED显示呈现00,01,10,11跳变,实现了递增计数;当nCR=0时,实现清零。

6. 实验总结

通过这个实验让我熟悉了与DEO实验板相关的一系列实验流程,掌握Quartus软件的一些常用操作。通过这次实验中编写简单的代码,复习了它的基本句法等知识,也体验了自己动手,从编写代码到最终硬件实现的快乐,学到了许多书本上学不到的东西,使我受益匪浅。


第二篇:实验报告5_高速计数器 3300字

SLC I ST&OPS OD Sales 100 B12 Task Report

Task Report

实验报告5高速计数器

实验报告5高速计数器

1. Purpose 1、通过实验,了解高速脉冲输出PTO和PWM的原理和使用方法

2. Equipment

实验设备

3. Process and emphases

实验流程与重点难点

3.1 实验内容

3.1.1 HSC(改变增减方向)

内容:

1、利用输入I0.1的上升沿或下降沿控制HSC的计数方向;

2、I0.1的上升沿为减,I0.1的下降沿为增

3.1.2 HSC(记录脉冲)

内容:利用高速计数器,将PTO输出的脉冲个数记录下来

1、 利用HSC0的模式12实现;

2、 利用HSC0的模式4实现

3.1.3 HSC(内部程序清零)

1、 通过对初始值赋0值来清零,当脉冲再次发生后,高速计数器继续计数;

2、 中断程序清零,则高速计数器不会继续运行

3.2 实验过程

1) 电气连接

如图1所示,将电源提供的24V电压分别于PLC的24V电源接入端口相连,并且将输入方向的M与1M

端口短接。

PPI CABLE端口与PLC 端口0(port0)相连,通过PPI电缆实现在线监控。

对于实验3.1.1,用导线将输入端口I0.0和I0.1引出。

对于实验3.1.2和实验3.1.3,用导线将输入端口I0.1 和I0.2引出,将Q0.0的输出接入I0.0,同时将输入

方向的L+与输出方向的1L+相连,给负载供电,同时将输入方向的M与输出方向的1M短接。 学如逆水行舟不进则退 1

SLC I ST&OPS OD Sales 100 B12 Task Report

PLCI0.0I0.1I0.2

图1 S7-200组成示意图

2) 端口定义

实验3.1.1中,I0.1的上升沿和下降沿来控制HSC的计数方向;

实验3.1.2中,利用HSC0模式12进行计数时,不需要外部控制,HSC0直接对Q0.0输出的PTO脉冲进行计数。利用HSC0模式4进行计数时,I0.1用于控制计数方向,I0.2用来给HSC0复位。

实验3.1.3中,I0.2用于给HSC0初始值赋0来实现清0。 3) 程序设计

实验3.1.1:

利用HSC0的模式0实现增减计数。因为HSC0的模式0由I0.0做时钟信号,因此可以通过I0.1的上升沿或下降沿对I0.0的脉冲增减计数。

因为选用了HSC0,则控制字节的存储器为SMB37,如图2所示,在初始化时给SMB37赋值为

16#FC,表示当前启用HSC,并且可以更新HSC的当前值和计数方向。给HSC0写入当前值可以将数值写入SMB38中。

SM37.7

SM37.6

SM37.5

将新预设值写入HSC:0 = 无更新

1 = SM37.4将计数方向写入HSC:0 = 无更新1 = 更新方向

SM37.3计数方向控制位:0 = 减计数1 = 增计数

SM37.2正交计数器的计数速率选择:0 = 4X计数速率1 = 1X计数速率

SM37.1

SM37.0

启用HSC:将新的当前值写入

0 = 禁止HSC:

1 = 启用HSC0 = 无更新

1 = 更新当前值

用于启动的用于复位的

有效电平控制位:0 = 高电平有效0 = 高电平有效1 = 低电平有效1 = 低电平有效

图2 SMB37控制字节示意图

通过I0.1的上升沿和下降沿改变计数方向,则可以在主程序中通过|P|和|N|检测I0.1的边沿跳变,然后分别给SMB37写入增减控制字。

减计数时,SMB37的值被赋为16#B4,增计数时,SMB37的值被赋为16#BC,每次给SMB赋新值后都要再次关联HSC0。

注意:在该实验中,通过给SMB37赋不同的值来实现增减计数,但是SM37.6必须保持为‘0’, 因为HSC在每次重新关联后会恢复为初始设定值,所以需要将SM37.6置为‘0’。在程序调试过程中,如果I0.1触发上升沿,则HSC0减计数,但当I0.1触发下降沿时,HSC0的值先回到初始设定值0然后随I0.0的脉冲自加。

实验3.1.2:

1、 利用HSC0的模式12实现PTO的脉冲计数

HSC0的模式12对Q0.0的输出脉冲进行计数,此时I0.0为时钟输入,而之前在电气连接时,将Q0.0的输出与I0.0相连,并且Q0.0产生PTO波形(程序中需要写一段PTO的波形产生程序)。所以只需将HSC0通过指令HDEF选择工作在模式12下,就可以对PTO的个数进行计数。

2、利用HSC0的模式4实现PTO的脉冲计数

HSC0工作在模式4下时,属于外部方向控制,内部控制字不起作用,计数器的增减由I0.1控制。与上一程序的区别仅在于指令HDEF选择模式4。虽然I0.1和I0.2分别控制计数方向和复位,但是都无需写进程序中,因为这属于硬件范畴。

学如逆水行舟不进则退

2

实验报告5高速计数器

SLC I ST&OPS OD Sales 100 B12 Task Report

实验3.1.3

1、 对初始值赋0使HSC清0,但高速计数器仍然能够继续计数

对初始值赋0可以通过给SMB38写0实现。实验要求高速计数器清0后仍然能够继续计数,则需要保持

SMB37的控制位SMB37.6为‘1’,使其能够更新当前值。

该实验中Q0.0依然输出PTO波形,并且与I0.0相连,HSC0对PTO的脉冲数计数。

2、 通过中断程序清0,并且高速计数器不再继续计数

HSC0对应中断事件12,当HSC0当前计数值与预设值相等时,进入中断程序,因此可以考虑在中断程

序中对HSC0清0,并且禁用HSC。

HSC0的预设值写在SMD42中,中断程序如图3所示,给SMB37写入控制字节16#40,即可以更新

HSC的当前值,并且禁止HSC计数,然后给SMD38写入0,对HSC0的计数器清0(给HSC赋值后一定要

再次关联HSC)。

实验报告5高速计数器

图3 禁用HSC的中断子程序

实验报告5高速计数器

实验报告5高速计数器

实验报告5高速计数器

实验报告5高速计数器

实验报告5高速计数器

4. What I have learned

心得与体会

1、 高速计数器一共有12种工作模式,其中模式3至模式12这9种模式下的增减方向不受控制字影

响。

2、 PLC高速计数器和一般用计数器的区别主要看读取外部输入对象不同。

PLC高速计数器和PLC程序是两个不同的内部机构。PLC程序是扫描机制,读取的对象是输入映像存储

器的数据。一般用计数器也是读取输入映像存储器。PLC高速计数器不是读取输入映像存储器的数据,而是直

接读取输入点的数据,不受扫描周期影响。因此,PLC高速计数器一旦启动,其专用的输入点就不再刷新其对

应的输入映像存储器。

5. Application range

应用范围

一般高速计数器可以与编码器结合使用,例如用来进行精确定位控制或测量位移等。采用高速计数器进

行多点定位,主要为了精确定位,而定位精度既决定于高速计数器的测量,也决定于执行机构的快速性。如果

采用普通输出指令,在一个扫描周期的程序执行阶段,改变的是输出印象存储器的值,PLC输出点不会立即刷

新,只有在程序执行完毕后,PLC的输出印象存储器才能对输出点刷新,执行输出。因此,为增加定位精度,

尽量采用立即输出指令,高速计数器不受扫描周期影响,可以立即刷新PLC输出点,提高程序执行的速率。

6. Ladder Diagram

程序清单

实验3.1.1程序 实验3.1.2程序1(HSC0的模式12) 实验3.1.2程序2(HSC0的模式4) HSC1.mwpHSC2_1.mwpHSC2_2.mwp

实验3.1.3程序1(HSC0初始值赋0方法清0) 实验3.1.3程序2(HSC0中断清0)

HSC3_1.mwpHSC3_2.mwp

学如逆水行舟不进则退 3

更多类似范文
┣ 更多计数器实验报告
┗ 搜索类似范文