首页 > 范文大全 > 正文

基于PC的分频器设计与实现

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于PC的分频器设计与实现范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:简要设计和实现了基于pc分频器,从硬件的选配,软件的编写和调试。讨论了硬件的选择原则,并实现了最优化,从软件的编写角度考虑内存的应用情况,有助于大规模工程的实现。

关键词:PC;分频器;最优化

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)14-20950-02

1 分频器的设计实现思路

分频器就是能够将输入频率通过器件的作用在输出时变为原来的N分之一。要想能够达到分频目的,需要一个能够将数值输入的接口,设计要求中需要的是从二进制逻辑开关;同时要考虑到硬件芯片接口问题,在这里我们用8255来完成。利用8253芯片在方式3下的工作特点完成硬件分频。

在整个分频过程中,同样要求有一个输出接口,设计要求中需要的是由LED完成。这个输出数值是分频器的分频系数。所以本设计中需要至少两个可编程接口芯片,输入频率需要产生,输出频率需要显示。

1.1 解决问题的方法及思路

1.1.1 硬件部分

首先用8253来实现分频器的作用。通过对计算机可编程芯片的学习,知道可编程定时器/计时器8253工作在方式3时,可以产生方波,用来计算分频的结果非常方便。

然后是输入和输出接口芯片的选择,我们采用8255来完成这个工作。8255是一种通用的可编程并行I/O接口芯片。8255既可以作为输入接口,同时也可以作为输出接口,这两种功能可以同时进行。

分频系数由二进制逻辑开关输入,通过逻辑开关的闭合状态表示“1”,“0”。然后将其作为二进制数来表示十六进制数。本设计中这个数值作为8253的分频系数值。

分频系数的输出由LED显示器来完成显示,LED显示器在实验箱上有提供,为六位。本设计中只要有四位显示器即可,由单独的四位显示器芯片来完成工作。

8253需要一个频率发生器为之提供固定的脉冲频率从而进行分频工作。这个任务由频率发生器74LS16完成,它可以产生固定的脉冲频率,并可以改变发生脉冲频率的值。也就是说它可以将脉冲频率限制在2MHZ以内,这样就达到了本设计的第一个要求。

1.1.2 软件部分

对8253的8253的工作方式设定为方式3,用计数器0和计数器2进行工作。计数器0工作方式控制字为:36H。通道2用来控制二极管,所以初始化计数器2的工作方式控制字为:0b6h。

初始化8255,c口输入,a,b口输出,b口段选,a口位选。C口作为输入口,与逻辑开关相连,接收开关表示的数值输入。PA、PB口作为输出口,它们的分别于LED的位码和段选码相连,这样8255的方式选择控制字为:10001001B。

2 硬件设计

2.1 选择芯片8253A

8253A在本设计中起分频器的作用,即将固定频率分成其1/N输出。接受频率发生器发出的固有频率,将其按照输入的分频系数进行分频,把结果传到8255。

8253A是一种可编程的定时器/计数器芯片,它可用于事件计数、分频、方波脉冲发生、定时器等各个有用的方面。它分频工作的功能是这样的:CLK引脚获得初始频率,此时若GATE为高电平,十六位计数初值寄存器中的数据装入计数执行单元CE中,它对CLK脉冲计数,每出现一个CLK脉冲,计数对执行单元CE的值减小。当减为0时,通过OUT输出指示信号,表明计数执行单元已为0。这时OUT输入的信号频率是CLK频率的N分之一。这样就达到了分频的目的。8253A有5种工作方式:门脉冲控制时钟输入,用门脉冲重新启动计数器,用门脉冲停止计数器工作,单次计数,循环计数等。

2.2 LED显示器

LED在本设计中作为分频系数的输出观察,需要以段位码判断各位输入的二进制数,并且做相应输出,从而验证设计中的接口电路是否成功。

LED是一种当处加电压超过额定电压时发生击穿,并因此而产生可见光的器件。这种数码管是由7段或8段(含有小数点,本实验中使用此种)笔画显示器组合一个字符而形成的。当段组合发亮时,便可以显示某一数码或字符。7段代码的各位用作a―g和DP的输入。LED分为共阴极和共阳极。两种情况下的字符编码不一样。

2.3 选择芯片8255A

8255A在本设计中起并行I/O传输接口,主要起到接受人为输入的分频系数并将其传至8253,待8253分频成功后再将分频频率传出,使得L1小灯作出相应闪烁;并且将输入的分频系数通过内部连接的74L244传给LED,使得分频系数在LED显示器上显示出来。采用8255A的方式0。C口作为输入口,与逻辑开关相连,接收开关表示的数值输入。PA、PB口作为输出口,它们的分别于LED的位码和段选码相连。

8255A是一种通用的可编程并行I/O接口芯片,又称“可编程外设接口芯片”。它是为8086/8088而设计的可以通过程序来改变其功能。本设计中8255A设置为方式0,在方式0下,CPU可以采用无条件读/写方式与8255A交换数据。C口作为输入口,与逻辑开关相连,接收开关表示的数值输入。PB口的八位作为LED的段选码,以显示是何数值输入。同时这个数据送给8253A作为其的分频系数。

2.4 逻辑开关

逻辑电平开关在本设计中作为输入器件,通过其输入的二进制数值来表示分频系数。它与8255A的PC口相连。由于需要输入16位二进制数,但是实验设备只有8位二进制逻辑开关,所谓16位二进制数的输入需要经过4次逐位输入才能完成,具体方法如下:当8位二进制开关1~8中的第8位为1时,允许输入当第7和第6为分别为00、01、10、11时各代表16位二进制数的低8位的低4位、低8位的高4位、高8位的低4位、高8位的高4位,这将当第8位为0第5为置1,就使得刚才输入数据打入8253,成为分频系数。

逻辑开关可作为数值的输入器件,也可以表示逻辑值。拨上时为+5V,拨下时为0V,分别代表“1”和“0”。其中5~8位需要做一些设定,简单的说第8位做输入控制,6和7位做位码选择,而第5位就做打入指令。

2.5 硬件总逻辑图及其说明

8255的D7―D0与8086的AD19―AD0通过数据总线收发器相连接,它的A1、A0与8086的A2、A1通过地址锁存器连接。由地址译码器的CS0连接其CS端。上述3位控制端作为8255的选择工作信号。8086的读/写控制信号也与8255的WR、RD相连接。8255的PA口八位与LED的8位段码相连,而位码则与PC的相连,273的片选与CS1相连。8255的PC口全部8位与8位二进制开关相连。8253的数据线、控制线、地址线、读/写控制线的连接与8255基本一致。片选线CS与CS2相连。8253的计数器的OUT与发光二极管相连,GATE与高电平相连。CLK与频率发生器相连。

3 控制程序设计

程序的一开始初始化8255A,然后再读取十六位二进制开关的数值,将其保存到新开辟的一个内存单元中。接下来初始化8253A,将保存到内存单元中的数值送入8253A,作为8253A的分频系数。8253A开始工作,进行分频,并将结果通过指示灯显示出来。送入内存中的数值再被送入到8255A进行输出。通过段码和位码的选择,将要输出的数值在其应该出现的地方显现出来。段码的选择通过读取段码表的数据,将此时刻所读取的数值转化为它的段码值。位码的选择按照顺序进行。从低位到高位进行选择。每个数值的显示都要设置一定的延时,并且使要显示的四位数值循环起来显示,这样在人眼的观察下就是静态的显示了。

4 上机调试过程

4.1 硬件调试

在硬件调试的过程为:首先连线,8255的D7―D0与8086的AD19―AD0通过数据总线收发器相连接,它的A1、A0与8086的A2、A1通过地址锁存器连接。由地址译码器的CS0连接其CS端。上述三位控制端作为8255的选择工作信号。8086的读/写控制信号也与8255的WR、RD相连接。8255的PA口八位与LED的八位段码相连,而位码则与PC的相连,273的片选与CS1相连。8255的PC口全部8位与8位二进制开关相连。8253的数据线、控制线、地址线、读/写控制线的连接与8255基本一致。片选线CS与CS2相连。8253的计数器的OUT与发光二极管相连,GATE与高电平相连。CLK与频率发生器相连。当设备连线完毕后,打开实验箱的电源开关,看实验箱上的各个电源指示灯是否亮起,如果亮起,说明设备供电正常。

4.2 软件调试

首先进入与实验设备相配套的编程环境,将程序先输入其中。经过编译连接后使其成为可以运行的汇编程序。在调试的过程中,采用单步运行的方式,每次都要检查一下程序中用到的寄存器里面的数值,看它们是否是理论上程序运行后的数值。从中判断所写程序的正确性。以便找出程序错误的细节之处。此外还要注意逻辑错误,是程序本身符合功能需要。对此,要通过对检查寄存器数值的观察,得出结论,加以修改。

4.3 联机调试

检查实验箱与电脑是否连接完好,打开实验箱电源。接着在电脑上进行操作,先点开调试软件。当屏幕上显示出连接成功时,就可以编译程序了。当程序编译、链接并传下位机后按全速运行,再观察四位LED数码管的显示和L1指示灯的闪烁情况。

5 设计结果分析

本设计经过调试、验证,得出符合要求的结果。即在8位二进制逻辑开关上分四次输入4位二进制数值后,作为8253A的分频系数并且要在4位LED数码显示器上显示出来。当8位二进制开关1~8中的第8位为1时,允许输入当第7和第6为分别为00、01、10、11时各代表16位二进制数的低8位的低4位、低8位的高4位、高8位的低4位、高8位的高4位,这将当第8位为0第5为置1,就使得刚才输入数据打入8253,成为分频系数。此时,LED数码显示器低4位分别显示输入的相应数据,而L1指示灯闪灯频率应该是频率发生器输出的原始频率和输入的分频系数通过8253分频后得到的频率。

参考文献:

[1] 马春燕,段承先,秦文萍.微机原理与接口技术(基于32位机)[M]. 电子工业出版社,2007.

[2] 周佩玲,彭虎,傅忠谦.微机原理与接口技术(基于16位机)[M]. 电子工业出版社,2007.

[3] 吴玉昌,胡荣强,王文娟.基于CPLD/FPGA的多功能分频器的设计与实现[J].世界电子元器件,2007(03):44-46.