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

时间:2024.4.7

              Lab 5 模4递增计数器

                                                                            集成1101班

1.   实验目的

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

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

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

2.   实验内容

a)      使用Verilog语言实现模4递增计数器。

b)      使用Lab4中D或JK触发器作为模块单元。

c)      得到仿真波形。

d)      使用DE0开发板下载。

3.   代码分析

l    主模块实现对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

l    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”,在弹出的窗口中输入项目的名称和存储位置。

360桌面截图20110726160936.jpg

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

360桌面截图20110726162300.jpg

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

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

360桌面截图20110726160633.jpg

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

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

360桌面截图20110726160717.jpg

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

360桌面截图20110726160825.jpg

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

360桌面截图20110726165037.jpg

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

360桌面截图20110726114846.jpg

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

5.   实验结果

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

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

6.   实验总结

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


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


Task Report

 


1. Purpose

实验目的

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

 


2. Equipment

实验设备      

Hardware and firmware硬件及固件

Software and version软件及版本

3. Processand emphases

实验流程与重点难点   

3.1  实验内容

3.1.1HSC(改变增减方向)

内容:

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 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中。

图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分别控制计数方向和复位,但是都无需写进程序中,因为这属于硬件范畴。

实验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)。

图3 禁用HSC的中断子程序

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)

                                                        

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

更多相关推荐:
计数器实验报告

实验4计数器及其应用一实验目的1学习用集成触发器构成计数器的方法2掌握中规模集成计数器的使用及功能测试方法二实验原理计数器是一个用以实现计数功能的时序部件它不仅可用来计脉冲数还常用作数字系统的定时分频和执行数字...

实验四、 计数器的设计 电子版实验报告

实验四计数器的设计实验室实验台号日期专业班级姓名学号一实验目的1通过实验了解二进制加法计数器的工作原理2掌握任意进制计数器的设计方法二实验内容一用D触发器设计4位异步二进制加法计数器由D触发器组成计数器触发器具...

数电 计数器实验报告

试验七计数器李*电子信息科学与技术一、试验目的1.掌握中规模集成计数器74LS160,161的逻辑功能及使用方法。2.掌握74LS160计数器的级联方法。3.学习用中规模集成计数器实现任意进制计数器。二、试验器…

实验报告:计数器

四川大学电气信息学院电气工程及其自动化网络专升本实验报告实验课程:电工电子综合实践实验名称:计数器班级:05秋电气工程及其自动化姓名:学号:VH1xxxx2003日期:20xx-x-x一、实验目的1、了解中规模…

计数器实验报告

计数器实验报告一实验内容1静态测试芯片74LS90的逻辑功能2动态测试芯片73LS90的芯片功能画出clk与其中一个输出的波形图3用一块74LS90芯片连接一个模2模5计数器4用两个74LS90级联成一个模24...

十进制计数器实验报告

广东水利电力职业技术学院20xx年4月1日设计一个动态显示十进制计数器一前言本实验将用到七段数码显示译码器译码器是用来驱动各种显示器件从而将用二进制代码表示的数字文字符号翻译成人们习惯的形式直观地显示出来的电路...

秒计数器实验报告

秒计数器实验报告一实验目的1显示60秒计时功能2计时器为60秒递减计时器3根据原理图分析各单元电路的功能4熟悉电路中所用到的各集成块的管脚及功能5进行电路的装接调试直到电路能达到规定的设计要求二实验器材秒计时器...

实验二 可编程定时器计数器报告

实验二可编程定时器计数器一实验目的掌握8253的基本工作原理和编程方法二实验内容1图21是本实验程序的接线图将计数器0设置为方式0计数器初值为NN0FH本程序为0FH用手动逐个输入单脉冲编程使计数值在屏幕上显示...

实验三 可编程定时器/计数器

课程名称微型计算机技术及应用实验班级实验名称实验三可编程定时器计数器指导教师学生姓名学生学号一实验目的掌握8253的基本工作原理和编程方法二实验设备1PC机一台2专用导线若干3TPCH通用微机接口实验系统一台4...

EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)

EDA实验报告姓名学号班级实验14选1数据选择器的设计一实验目的1学习EDA软件的基本操作2学习使用原理图进行设计输入3初步掌握器件设计输入编译仿真和编程的过程4学习实验开发系统的使用方法二实验仪器与器材1ED...

数电实验计数器及其应用

3491宋亚明实验五计数器及其应用41实验目的1熟悉常用中规模计数器的逻辑功能2掌握二进制计数器和十进制计数器的工作原理和使用方法42实验设备174LS90274LS473七段显示译码器43实验要求1设计一个十...

基于vc++mfc的科学计算器程序实验报告

课程名称实验项目专业班级姓名实验室号实验时间指导教师实验报告windows软件开发实习科学计算器软件1006班蔡钟绪学号10120xx21410实验组号批阅时间马广焜成绩沈阳工业大学实验报告适用计算机程序设计类...

计数器实验报告(45篇)