首页 > 范文大全 > 正文

计算机硬件电路设计的软件比较教学研究

开篇:润墨网以专业的文秘视角,为您筛选了一篇计算机硬件电路设计的软件比较教学研究范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:计算机专业的教学过程中,学生对电子技术等硬件知识原理及设计方法的掌握困难较大。而学生较好的程序设计能力能够帮助其加深对电路原理和设计思路的理解。因此,提出了一种称为计算机硬件电路设计软件比较教学方法。该方法以逐次渐近型ADC(Analog Digital Converter的缩写)电路原理教学为例,在程序算法表达设计思想的基础上,结合数字电路的基本知识,引导学生理解电路的设计原理、掌握设计思路。从实际教学来看,效果较好。

关键词:电路设计;逐次渐近;ADC;比较教学

中图分类号:G642.41 文献标识码:A 文章编号:1009-3044(2016)22-0127-03

Abstract:Students have some difficulties in learning electronic technology and other hardware principle and design method while teaching computer science. And also the ability of program design could help students understand circuit theory and design ideas. Therefore, a kind of comparative teaching of computer hardware circuit design by software was presented. It guided students to understand the ADC circuit principle and design ideas through program algorithm and basic knowledge of digital circuits in teaching of successive approximation ADC circuit theory. It has been shown that the method could help students more effectively understand circuit knowledge.

Key words: circuit design; successive approximation; ADC; comparative teaching

1 引言

计算机专业的硬件知识课程通常包括电路原理、模拟电子与数字电子技术等课程。从实际教学过程看,由于实验条件、物理知识等多方面的因素,学生普遍反映电子技术的学习较为困难。甚至严重情况下,会影响学生对硬件电路设计的兴趣,这不利于学生综合素质的培养[1-2]。另一方面,软件设计由于对动手操作条件要求不高,编程锻炼的机会多,不少同学掌握程度较好,从而培养了兴趣。

学习通常都是利用已有知识去理解新知识的过程,如果新知识和已有知识在很大程度上具有相似性,或者通过合理的比较,建立新知识与已有知识之间某种紧密的联系,学生在理解上就相对容易。自信心也可能会从已掌握知识迁移到新知识上。比较是根据一定的标准,把有某些联系的两种或两种以上的事物加以对照,确定事物同异关系的思维过程和方法[3]。本文所谈论的比较教学方法就是在此概念框架下定义的,在相关教学中已经被成功采用[4-5]。

因此,本文以数字电子技术教学中的重点知识“逐次渐近型ADC”为例,在对原理概念做简要介绍后,引导学生用算法、程序语言的形式将设计的思想表达出来,再利用基本组合和时序电路将软件形式表达的设计思想“翻译”成初步的硬件电路。通过对软件和硬件初始化、运行方式等的比较,对初步的ADC电路进行优化调整,最终形成经典的逐次渐近型ADC电路设计。

2 逐次渐近型ADC简介

ADC是将模拟信号转换成数字信号的器件,以方便计算机等数字系统进行信号处理,是计算机系统与外部物理世界交互的重要部件,也是数字电子技术课程中的重要知识内容。根据构造原理的不同,ADC的种类很多,例如并联比较型ADC、反馈比较型ADC、双积分型ADC、V-F变换型ADC,以及∑-ΔADC等。其中逐次渐近型ADC是一种反馈比较型ADC,它具有转换速度较快、体型小、构造成本低等优点,因此是目前ADC产品中用得较多的一种。图1和图2分别是逐次渐近型ADC的原理框图和电路原理图[6]。

逐次渐近型ADC的基本设计思想是:它是对计数型ADC在转换速度上的改进,对于外界模拟输入信号,逐渐计数累加,通过DAC产生输出一个与模拟信号相等的电压信号,此时输入给DAC的数值就是ADC的转换结果。值得注意的是,计数累加不是每次加1个单位,而是采用类似“二分查找”的原理,由高位到低位逐渐取1比较,如果DAC的输出大于外界模拟信号,相应的位置0,否则保留置1,直至到最低位比较结束。

传统的电路教学方法,会对照着原理图给学生讲解思想和电路的组成。学生领会上比较困难,特别是即使搞清楚原理,对电路的设计过程、来龙去脉也是不清楚的,从而产生对电路设计的神秘感和恐惧感,不利于进一步学习。

3 利用软件设计的比较教学

3.1 程序和电路的运算方式比较

通常的程序设计,是一种串行的思维方式,设计者仿照CPU指令的执行方式。学生写出程序设计的算法,再转换成具体的程序设计语言,供计算机编译执行。从实践教学过程看,在这一点上,在入门时,较电路设计更容易为学生所接受。以下内容介绍逐次渐近型ADC电路设计的软件比较教学过程。通过这一过程,让学生自己很自然地“设计”出逐次渐近型ADC。

3.2 逐次渐近型ADC的软件算法表达

用算法和程序表达计算机系统的处理过程,将有助于加深理解,也更便于未来的工程实现。逐次渐近型ADC可理解为一个将浮点型(表示模拟信号)转换成一定位数的整形数(表示数字信号)的函数模块。可以用伪码来表达这一过程,为了便于计算机程序语言实现,我们取转换结果为8位无符号整形。

算法1 BitADC8

输入:浮点数input

输出:8位无符号整形数iAdcResult

处理:

BEGIN

1,iAdcResult初始化为0,当前比较位BitNum初始化为最高位,即BitNum赋值为7(表示取最大值的一半,从中间开始比较);

2,转换目标值iAdcResult的当前位BitNum置为1与输入浮点数比较;

3,如果iAdcResult大于input,置iAdcResult的当前比较位为0;

4,当前位BitNum减一,如果BitNum>=0,去第2步,否则输出iAdcResult;

END

学生对上述算法的理解是不太困难的,也可以较方便地用C语言来实现,如下面的函数BitADC8所述。需要说明的是,在C语言中有标准的函数可以实现这样的转换,这里是为了说明原理,故不采用现有的标准函数或者强制类型转换实现[7]。

int BitADC8(float input)

{if (input < 0 ) return -1;

if (input > 255) return 255;

unsigned char iAdcResult=0;

int BitNum=7;

while (BitNum >= 0)

{iAdcResult = iAdcResult | (1

if (iAdcResult > input)

iAdcResult = iAdcResult & ~(1

BitNum--;}

return iAdcResult;}

3.3 电路设计

学生写出BitADC8以后,基本对转换的原理有了较为深刻的理解,下面讨论如果从BitADC8函数中引导逐次渐近型ADC的电路设计。

逐句逐句地用数字电路中基本的组合和时序电路模块来理解BitADC8,最后形成逐次渐近型ADC电路与函数BitADC8的语句对比联系,如下图3所示。图中一共标注了5处对比模块,可以清晰地看到,软件算法能够帮助我们理清电路设计的思路,从而有助于我们进行硬件电路的设计。

当然,硬件电路和软件模块在表达和执行上还是有区别的,本质可能一一对应。局部细节的调整需要设计者自己去琢磨、理会。例如,或门G4和G5初始化时清零作用,还有软件串行执行和硬件电路并行执行的区别等。但这不影响两者的比较理解,设计的联系性还是比较紧密,具有重要意义。

4 结论

文章以逐次渐近型ADC电路原理教学为例,介绍了硬件电路设计的软件比较教学方法的应用。从实际教学效果来看,能够起到帮助学生掌握电路设计思路的作用,也有助于将来在EDA等课程中学习VHDL等硬件描述语言,更重要的是通过学习迁移帮助提高学生电路设计的信心,

参考文献:

[1] 任英玉, 王萍. “模拟电子技术”课程质量提升探讨[J]. 电气电子教学学报, 2016(2): 36-38.

[2] 李月乔, 宗伟. “模拟电子技术基础”教学方法的思考与体会[J]. 电气电子教学学报, 2007(5): 97-99.

[3] 丁邦. 反思教学论研究――基于比较教学论的视角[J]. 课程・教材・教法, 2012(9): 26-31+49.

[4] 徐钦桂, 杨桃栏. 比较教学法在操作系统教学中的应用与实践. 计算机教育, 2010(10): 95-99.

[5] 陈锟, 田晓梅. 用Matlab进行插值法比较教学研究[J]. 电气电子教学学报, 2012(2): 98-100.

[6] 阎石, 数字电子技术基础[M]. 北京: 高等教育出版社, 2006: 532-534.

[7] Kernigham, B.W. and R. Dennison. C程序设计语言. 北京:机械工业出版社, 2012: 45-70.