PADS技术论坛
400万+工程师在用
400万+工程师在用

apple2008

12年用户 170经验值
私信 关注
[讨论]

EDA技术在微机接口技术实验教学中的应用

2008-6-25 09:53

微机接口技术是计算机专业的核心课程之一,是学习计算机硬件系统的关键课程。搞好该课程的实验教学,对于加深对课程的理解、培养设计能力和创新能力具有重要的意义。多年来,微机接口技术课程的实验一直使用专用实验箱,但存在几个方面的问题:
<p>(1) 实验箱系统中的硬件结构基本固定,器件的品种、数量扩展困难,因此以验证型的实验为主,学生的设计难以突破实验箱的限制;</p>
<p>(2) 实验方法与前期课程脱节,与技术的发展脱节;</p>
<p>(3) 由于实验箱中需学生插接的连线很多,只要一个接触不良就会影响实验的完成。因此有必要改革微机接口课程的实验模式。EDA技术的出现,革新了传统的手工设计过程。微机接口设计作为一个典型的复杂数字系统设计,其设计方法发生了根本性的变革,因此应用EDA技术是微机接口课程实验改革的方向。</p>
<p><strong>1 EDA技术简介</strong></p>
<p>EDA技术是指以计算机为工作平台,以EDA软件工具为开发环境,以硬件描述语言为设计语言,以可编程器件为实验载体,以专用集成电路、片上系统芯片为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程,是一种基于芯片的现代电子系统设计方法。EDA技术主要包括4个方面的内容:</p>
<p>大规模可编程逻辑器件;硬件描述语言;开发软件工具;实验开发系统。</p>
<p>其中,大规模可编程逻辑器件是利用EDA技术进行电子系统设计的载体硬件,描述语言是利用EDA技术进行电子系统设计的主要表达手段,开发软件工具是利用EDA技术进行电子系统设计的智能化的自动化设计工具,实验开发系统则是提供芯片下载电路及EDA实验/开发的外围资源,供硬件验证用。在实验教学中,实验硬件使用了我们开发研制的CPLD开发系统,其中的CPLD器件为xilinx公司XC95系列的<a href="http://www.qooic.com/detail-XC95144PQ160.html" target="_blank">XC95144PQ160</a>,实验使用VHDL为设计语言,选用了XilinxISE7.1i作为实验软件。</p>
<p><strong>2 设计实例——键盘接口设计</strong></p>
<p>下面以键盘接口设计为例,说明EDA技术在微机接口技术实验教学中的应用。</p>
<p><strong>2.1 硬件设计</strong></p>
<p>硬件实现框图如图1所示。</p>
<table width="675">
<tbody>
<tr>
<td>
<div align="center">&nbsp;</div></td></tr></tbody></table>
<p><strong>2.2 按键扫描</strong></p>
<p>本设计采用16.384 MHz时钟,缓冲后除了为其他芯片提供工作时钟外,还可采用计数的方法进行分频,以得到125 Hz的参考时钟。这个时钟,就用来作几个与键盘处理息息相关的进程敏感事件。按键采用通用的扫描方式,4组行扫描线是在每一个分频时钟的下降沿,利用1个预先设计的4位状态机产生,在每一个扫描线送出的同时,读取列值(COL),即按键码。按键行扫描时序图如图2所示。</p>
<p><strong>2.3 按键的识别</strong></p>
<p>如果本次扫描没有键按下,按键码赋值为00H。如果扫描到键码不为0(即有键按下),将该键码对应的键值送至存储器指定地址data key暂存。然后再触发中断,接受处理器的访问。本设计中CPLD将键码转换为标准键盘按键的ASCII码,可以直接送至数据线由处理器做读取、判断处理,而无需再做转换。</p>
<p><strong>2.4 按键长按、去抖及相关问题的解决</strong></p>
<p>本设计中,如果长时间(超过2个扫描周期)按同一按键视为单次按键,处理方法如下:每次扫描到的键码与暂存在data_key的键码相比,如果相等则说明按键未释放,不作处理;如果不等说明有新的按键按下,则触发中断。这样设计解决了长按键的问题,但产生了新的问题:如果下次(间隔了若干个扫描周期)还是同一键按下,那么会扫描到同一键码,按照上述处理机制,这个键码是不送数据线的,这是不正确的。</p>
<p>我们注意到,同一按键按下间隔的时钟周期理论上为4个周期(按本设计4行扫描线计算),在本设计中,采用16.384 MHz时钟,采用计数的方法进行分频,得到125 Hz的参考时钟,故需要32 ms。在实际应用中,任何操作人员也达不到这个速度。所以,这里可以采用一个小技巧:</p>
<p>设计一个计数器,每扫描到一次为0键码(无键按下),计数器加1。如果有键按下,即扫描到的键码不为0,则计数器清零;如果计数到某一数值(即时间大于一个扫描周期),则保持当前计数不变。这样通过综合分析,得出触发中断、要求得到响应的条件为:</p>
<p>(1) 扫描到的键码不为0;</p>
<p>(2) 本次扫描到的键码和寄存器data key中的暂存码不同;</p>
<p>(3) 计数器当前计数值大于3;</p>
<p>这样就解决了不同按键的响应问题,或者:</p>
<p>(1) 扫描到的键码不为0;</p>
<p>(2) 计数器当前计数值大于等于5。</p>
<p>这样就解决了在以上功能实现前提下同一按键连续按下的响应问题。</p>
<p>大量实践经验证明,按键抖动时间一般为10 ms(保守估计),本设计中扫描时钟为8 ms,在满足快速响应按键的同时,在较大程度上也实现了键盘去抖的功能。</p>

回帖(1)

杨国满

2014-2-11 13:39:06
{:1:}{:1:}{:1:}

更多回帖

打开APP