《分频器和计数器的应用》由会员分享,可在线阅读,更多相关《分频器和计数器的应用(10页珍藏版)》请在金锄头文库上搜索。
1、 数电实验 数电实验 实验五:分频器和计数器的应用 实验五:分频器和计数器的应用 专业:信息工程专业:信息工程 班级:09031201班级:09031201 学号:2012302250学号:2012302250 姓名:周 康 鹏 姓名:周 康 鹏 同组人:魏东(2011302282) 同组人:魏东(2011302282) 一、实验目的 一、实验目的 1、熟悉分频器的原理; 2、了解计数器 74160(十进制计数器)的工作原理,任意进制计数器的 改装; 3、了解共阳极七波段数码管的工作原理和使用方法。 二、实验要求 二、实验要求 1、 利用开发板上的 50M 时钟,用 VHDL 或 Verilo
2、g HDL 实现两路分频输 出, 一路为 50M 分频占空比 50%的 1Hz 信号输出, 另一路 5M 分频占空比 20% 的 10Hz 信号输出。 (不做波形仿真) 2、 根据所学过的门电路、中规模器件和计数器,用原理图方法实现计数 方式如下电路(两位 BCD 显示) (需要做波形仿真) : 00, 01 , 02,.09; 11, 12, .19; 22,.29; 33,.39; 44,.49; 55.59; 66.69; 77.79; 88.89; 99; 3、 用上述实验要求 1 已经实现的分频信号 1Hz 和 10Hz,作为时钟信号, 驱动实验要求 2 的计数电路,并结合上次实验实
3、现的乘法器,实现 99 乘法 表显示并能够用开关控制显示速率(1Hz 或 10Hz 显示) (不做波形仿真) 。 4、利用上次实验实现的加法电路,能够用开关实现 99 乘法表和 99 加法表 的切换(不做波形仿真) 。 三、实验设备三、实验设备 1.计算机(Quartus 9.0) 2.FPGA 开发电路板(芯片型号:EP3C16F484C6) 四、实验原理 四、实验原理 1、分频器: 由于 FPGA 开发板上的时钟频率为 50MHz,即 1s 内计数次,脉冲周期为 20ns; 71051要将其分频为 1Hz 的脉冲输出,即脉冲周期为 1s,且占空比为 50%,可以设置输入 CP 脉冲在计数
4、0期间为低电平,期间为高电平; 7105 . 27105 . 271052要将其分频为 10Hz 的脉冲输出,即脉冲周期为 0.1s,且占空比为 20%,可以设置输入 CP 脉冲在计数 0期间为低电平,期间为高电平; 6101610161052、实验要求 2 图 1 计数器仿真电路图 五、实验步骤及结果分析 五、实验步骤及结果分析 步骤 1步骤 1、分频器封装 用 VHDL 编写程序 fenpin.vhd(分频程序(附录显示)) 并将此程序封装为: 图 2 分频封装(fenpin.bsf) 步骤 2、步骤 2、乘法器封装 用 VHDL 编写程序 mul4a.vhd(乘法程序(附录显示) ) 并
5、将此程序封装为: 图 3 乘法器封装(mul4a.bsf) 步骤 3步骤 3、加法器封装 图 4 加法器仿真电路图 并将图 4 所示电路图封装为: 图 5 加法器封装(add4a.bsf) 步骤 4、步骤 4、计数器封装 将图 1 所示电路图封装为: 图 6 计数器封装(jishu.bbsf) 步骤 5、步骤 5、 图 7 实验要求中 3 的电路图 (注: 要将 fenpin.vhd、 mul4a.vhd 和 add4a.bdf 加入到所在工程的顶层文件中) 步骤 6、 步骤 6、 附加要求的实现: 将图 7 中添加一加法器的封装文件,并将计数器的个位、十位分别作为加法器的 两个加数, 在数码
6、管显示时, 对积与和对应为分别作二选一数据选择器, 共八个, 将这八个数据选择器的开关共在一起,即可完成乘法表和加法表的切换。 实验结果: 实验结果: 1、 1、 图 8 计数器的仿真结果显示 2、硬件结果检测 将实验要求 3 与附加要求中的电路图设置好引脚并下载到 FPGA 开发板上, 以检测实验结果是否符合预期结果。 经检测实验电路满足预期的结果, 可以控制计数在1s和0.1s的速率下切换, 同时也可以控制乘法表和加法表的切换。 六、实验心得与体会 六、实验心得与体会 通过本次实验我对 VHDL 语言在实现函数或逻辑功能方面有了更深入的了 解,对 Quartus 在封装 *.vhd 文件与
7、*.bdf 文件的操作进行了初步的了解,同时 在工程中如何应用这些用户封装文件有了基本的掌握。除此以外,对在自己在理 论设计方面的不足有了一些有了确切的掌握。 附录: 附录: 1.分频程序(fenpin.vhd) library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity fenpin is port (CP_in: in std_logic; cp_1:out std_logic; cp_10:out std_logic); end fenpin; architecture fwm of
8、 fenpin is signal temp1:std_logic; signal temp2:std_logic; begin process (CP_in) variable count1:integer range 0 to 50000000; variable count2:integer range 0 to 5000000; begin if (CP_inevent and CP_in=1)then count1:=count1+1; if count1iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii=0;j=0;k=0;l=0;m=0;n=0;o=0;p=0; END CASE; END PROCESS; END fwm;