问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

基于FPGA的可编程定时器/计数器8253的设计与实现

发布网友 发布时间:2022-04-23 01:03

我来回答

1个回答

热心网友 时间:2022-04-22 09:54

基于FPGA的可编程定时器/计数器8253的设计与实现
摘??? 要:本文介绍了可编程定时器/计数器8253的基本功能,以及一种用VHDL语言设计可编程定时器/计数器8253的方法,详述了其原理和设计思想,并利用Altera公司的FPGA器件ACEX 1K予以实现。
关键词:FPGA;IP;VHDL

引言
在工程上及控制系统中,常常要求有一些实时时钟,以实现定时或延时控制,如定时中断,定时检测,定时扫描等,还要求有计数器能对外部事件计数。要实现定时或延时控制,有三种主要方法:软件定时、不可编程的硬件定时、可编程的硬件定时器。其中可编程定时器电路的定时值及其范围可以很容易地由软件来确定和改变,功能较强,使用灵活。Intel的定时器/计数器为可编程定时器PIT,型号为8253,改进型为8254,就是为完成上述功能而设计出来的一种电路。
随着ASIC的发展,在实际工程中通用的8253PIT芯片表现出如下的不足:1. 计数频率不够,8253计数速率最高2MHz,即使是其改进型8254也往往不能满足一些需要较高计数频率的工程。2. 8253PIT没有复位信号,输出的初始状态不受控制。针对8253的这些局限性,在实际工程中往往需要重新设计8253,并把8253的部分功能作为一个独立的IP模块嵌入到设计中,以实现完成某种特定功能的ASIC。

8253的基本功能和内部结构
主要功能
* 每片内部包含有3个独立的16位计数通道;
* 每个计数器都可以按照二进制或二—十进制计数;
* 每个计数器的计数速率可高达2MHz;
* 每个计数通道有6种工作方式,可由程序设置和改变;
* 所有的输入/输出电平信号都与TTL兼容。
内部结构
8253的内部结构如图1所示。
1. 数据总线缓冲器。这是8253与CPU数据总线连接的8位双向三态缓冲器,CPU通过数据总线缓冲器将控制命令字和计数初值写入8253芯片,或者从8253计数器中读取当前计数值。
2. 读/写逻辑。这是8253内部操作的控制部分。首先有片选信号CS的控制部分,当CS为高时,数据总线缓冲器处在三态,系统的数据总线脱开,故不能进行编程,也不能进行读写操作。其次,由这部分选择读写操作的端口(3个计数器及控制字寄存器),并控制数据传送的方向。
3. 控制字寄存器。在8253初始化编程时,由CPU写入控制字以决定通道的工作方式。此寄存器只能写入而不能读出。实际上,8253的3个计数器通道都有各自的控制字寄存器,存放各自的控制字,初始化编程时,这3个控制字分三次共用一个控制端口地址写入各自的通道.它们是利用最高两位的状态不同来区分的。
4. 计数器通道。包括计数器0、计数器1、计数器2。它们的结构完全相同,彼此可以按照不同的方式独立工作。每个通道包括:一个8位的控制寄存器;一个16位的计数初值寄存器;一个计数执行部件,他是一个16位的减法计数器;一个16位的输出锁存器。
每个通道都对输入脉冲CLK按二进制或二—十进制,从预置值开始减1计数。当预置值减到零时,从OUT输出端输出一信号。计数过程中,计数器受到门控信号GATE的控制。

8253的设计
根据8253的内部结构,设计8253主要分为两大部分:总线控制部分和定时/计数部分。
总线控制部分设计
这一部分主要完成数据的读/写,以及控制字的写入。用VHDL设计这部分前,应该了解8253的端口选择(见表1)和控制字(见图2)。
设计的关键在于对8253端口控制字的掌握。写信号到来时,首先要判断是控制字还是计数初始值。如果是初始值,其中先写低字节,再写高字节部分是重点,需要一个信号来判断写入的是新数据还是上一数据没写完的高字节部分.其他计数器的读/写大同小异。只要对8253的端口控制字了解清楚以及对读/写的时序有一定的了解,这一部分的逻辑很容易用VHDL语言描述出来.该进程可对外发出控制信号,表示控制字及数据写入完毕,可以进行计数器的计数操作了。该控制信号可以作为下面介绍的计数部分的触发信号。
计数器部分设计
8253有3个独立的计数器,每个计数器有6种工作模式,完成不同的功能。现以方式4为例介绍VHDL设计,其他的可以在方式4基础上加以修改。
这种工作方式,当写入控制字后输出为高。当写入计数值后,再过一个时钟周期,计数执行部件获得计数初值,并开始减1计数。当计数到0后输出变低电平,此低电平一直维持一个时钟周期,然后又自动变为高电平,并一直维持高电平,计数器停止计数。这种方式计数是一次性的,只有输入新的计数值之后,才能开始新的计数。
下面介绍方式4的设计过程:
CPU写入控制字后,输出outs立即复位,方式4中复位后outs为高电平。CPU写入计数初值的下一个CLK脉冲,计数初值被送到计数执行部件并开始减1计数,又经过N个时钟周期后才输出一个负脉冲。当GATE=1时,允许计数,GATE=0时,禁止计数。这样就实现了方式4基本的软件触发功能。
if clk1'event and clk1='0' then ——时钟脉冲下降沿到来
if gate1='1' then ——门控位为1,允许计数
if ce1>"0000000000000001" then
ce1<=ce1-1;
——减1计数,ce为计数执行部件
elsif ce1="0000000000000001" then
out1<='0'; ——初值减到1时输出低电平
???? ce1<=ce1-1; ——继续减1
elsif ce1="0000000000000000" then
out1<='1'; ——初值减到0时输出高电平
??? end if;
?? elsif gate1='0' then
——门控位为0,禁止计数
??? null;
?? end if;
? end if;
上面的小程序虽不完整但是却描述出了方式4的软件触发基本功能。若在计数过程中改变计数值,新值写入后的下一个CLK周期时,此计数值被写入计数执行部件并从新的计数值开始计数.如果写入的计数值是两个字节,那么写入第一个字节时计数不受影响,写入第二个字节后的下一个时钟周期,计数执行部件获得新值,并从新值开始重新计数,叫做软件再触发.软件再触发功能只要在上面的程序中加入相应的判断信号和控制信号即可实现。
完整的8253写过程流程
实际上完整的8253就是一个拥有多个进程的复杂结构体。读总线过程、写总线过程、每个计数器的6种工作方式都是一个独立的进程.进程之间是并行的,只要进程的敏感信号发生变化,该进程就被触发一次,而进程内部是按照时序顺序执行的。以写过程为例,写总线进程本身是靠敏感信号wr和cs来触发的,无论写入控制字还是写入计数初值后,写总线进程都会对外发出信号以表示某个计数器的控制字写入完毕或者某个计数器的某个工作方式的计数初值已经写入,可以进行计数了。而这些信号又相应的作为其他进程的敏感信号,进程之间的通信就是依靠这些信号来完成的。这些进程之间都是并发执行的,具体哪个进程被执行取决于控制字。图3给出了写过程的流程,读过程与之类似。

设计结果验证
本设计开发软件采用Altera公司的集成开发软件MAX+PLUS II 10.2完成。并用该公司的ACEX 1K系列FPGA芯片予以验证。
之所以选用ACEX 1K系列芯片,是因为它是一种低成本高密度的FPGA芯片系列,是首选的中规模器件产品。它具有如下特点:
* ACEX 1K采用查找表(LUT)和EAB(嵌入式阵列块)相结合的结构,特别适用于实现复杂逻辑功能存储器功能,例如通信中应用的数字信号处理、多通道数据处理、数据传递和微控制等。
* 典型门数为1万到10万门,有多达49152位的RAM(每个EAB有4096位RAM)。
* 器件内核采用2.5V电压,功耗低,能够提供高达250MHz的双向I/O功能,完全支持33MHz和66MHz的PCI局部总线标准。
* 具有快速连续式、延时可预测的快速通道互连;具有实现快速加法器、计数器、乘法器和比较器等算术功能的专用进位链,以及实现高速多扇入逻辑功能的专用级连接。
通过仿真、综合,并下载到FPGA中进行验证,本设计可以很好地实现其功能。■

参考文献
1 曾繁泰,陈美金. VHDL程序设计
2 林明权. VHDL数字控制系统设计范例
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
职工医药费计什么科目 读书郎学习平板电脑G9好吗 对高中的有用吗 冬季用空调取暖划算吗 一个朋友在 审计局工作 一直是科员 工作两年了 但想跳槽去公安 是不是... 无量涨停后大阴线洗盘? 北二外在北京怎么样? 翡翠镯子摔碎了预示什么翡翠镯子摔碎了的预示 煤炭专用网络系统折旧年限 经营煤炭公司需要购置的固定资产有哪些? 煤炭坑口属于什么固定资产 verilog 实现1除以X 急求FPGA实现算法有关的电子书!! 请问FPGA与DSP有什么区别? FPGA做DSP的优点有哪些? FPGA数字信号处理,怎么自学?(信号处理工程师进,新手麻烦和我一起等待答案) 请问基于FPGA的数字信号处理,是不是就是指简单的运算,数字滤波器和DFT&#47;IDFT?除了这几样还有没有其他的 什么是DSP+FPGA体系结构 数字信号处理为什么需要FPGA硬件的参与? 【高分悬赏】求大虾指点,数字信号处理对FPGA设计来说重要吗~~ 数字信号处理的FPGA实现,课后习题答案 与dsp相比 用fpga来实现数字信号处理的功能有哪些优缺点 数字信号处理的FPGA实现的介绍 fpga数字信号处理实现原理及方法 怎么样 数字信号处理的FPGA实现的目录 无心法师2 不是会员 什么时候能看 无心法师第1 2季 百度云? 有谁知道无心法师2是什么时候播?几月几号 无心法师第二部什么时候播出? 求免费的无心法师第二部全集,种子或者百度云都可以,谢谢 无心法师2更新时间 每周几更新几集一共多少集 FPGA的发展方向是什么? 假设现在有一些处理是在软件中实现的。当用FPGA或ASIC等硬件重新实现时,应该考虑什么。 fpga数字信号处理实现原理及方法这本书怎么样 夏天吃南瓜花有哪些好处呢?有什么吃法? 做数字信号处理和FPGA可以往哪个方向研究 数字信号处理发展现状及趋势 南瓜花有甚么营养?能吃?? 南瓜花治咳嗽鲜的怎么用 如何用南瓜花浇汤 20码的鞋子是多少厘米? 20码是什么速度快吗? 时速20码一个小时开多少公里 高速超速20码怎么处罚 20码是多少迈 当车速20码时1秒能跑多少米 20码的电动车跑十里路大概多少分钟? 车速20码跑20公里路要多长时间 20码是多远的距离呀? 20码车速一秒多少米 新手上路开20码丢人吗?