数控分频器设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

EDA设计课程实验报告实验题目:数控分频器设计学院名称:专业:班级:姓名:高胜学号小组成员:指导教师:一、实验目的学习数控分频器的设计、分析和测试方法。二、设计任务及要求1、设计总体要求:在SmartSOPC试验箱上的实现数控分频器的设计。在clk输入64kHz或更高(要确保分频后落在音频范围)的频率信号(由int_div模块分频得到);输出FOUT接蜂鸣器BUZZ-ER,由KEY1/KEY2控制输入8位预置数,并在数码管1~2上显示(调用key_led模块)。2、设计基本要求:(1)能将频率分频。(2)进行正常的蜂鸣器的蜂鸣功能。(3)由2个数码管显示预置数。三、系统设计1、整体设计方案数控分频器的输出信号频率为输入数据的函数。数控分频器的clk为时钟输入端,data是数据输入端,fout是数控频率输出端。数控分频器的输出频率受数据data的控制,data越大,输出频率越高。数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。数控分频器是由数码管显示电路、按键控制电路、脉冲发生电路这3个基本电路组成。数控分频器的系统框图(见图1):图1数控分频器的系统框图2、功能模块电路设计48MHz的脉冲经过分频器分成64KHz,然后输入带数控分频电路当中,按键控制分频电路中的频率变化,数码管显示预置数,蜂鸣器响起。(1)输入输出模块框图(见图2)脉冲发生电路按键控制数码管显示数控分频电路蜂鸣器图2数控分频器的输入输出模块框图(2)算法流程图(见图3)图3数控分频器的算法流程图(3)Verilog源代码按键控制电路代码:modulekey_led(clock,key,led,hex,bin,seg,dig,ledin,data);inputclock;//系统时钟(48MHz)input[7:0]key;//按键输入(KEY1~KEY8)output[7:0]led;//LED输出(LED1~LED8)output[15:0]hex;//4位16进制数输出(在数码管1~4显示)output[3:0]bin;//4位2进制数输出(在LED1~LED4显示)output[7:0]seg;//数码管段码输出output[7:0]dig;//数码管位码输出input[3:0]ledin;//LED显示输入(在LED5~LED8显示)input[15:0]data;//数码管显示输出(在数码管5~8显示)reg[15:0]hex_r;reg[3:0]bin_r;reg[7:0]seg_r;reg[7:0]dig_r;reg[16:0]count;//时钟分频计数器reg[7:0]dout1,dout2,dout3,buff;//消抖寄存器reg[2:0]cnt3;//数码管扫描计数器reg[3:0]disp_dat;//数码管扫描显存regdiv_clk;//分频时钟,用于消抖和扫描wire[7:0]key_edge;//按键消抖输出//信号输出assignhex=hex_r;assignbin=bin_r;assignseg=seg_r;assigndig=dig_r;assignled=~{ledin,bin_r};//时钟分频部分always@(posedgeclock)beginif(count17'd120000)begincount=count+1'b1;div_clk=1'b0;endelsebegincount=17'd0;div_clk=1'b1;endend//按键消抖部分always@(posedgeclock)beginif(div_clk)begindout1=key;dout2=dout1;dout3=dout2;endend//按键边沿检测部分always@(posedgeclock)beginbuff=dout1|dout2|dout3;endassignkey_edge=~(dout1|dout2|dout3)&buff;//4位16进制数输出部分always@(posedgeclock)//按键1beginif(key_edge[0])hex_r[15:12]=hex_r[15:12]+1'b1;endalways@(posedgeclock)//按键2beginif(key_edge[1])hex_r[11:8]=hex_r[11:8]+1'b1;endalways@(posedgeclock)//按键3beginif(key_edge[2])hex_r[7:4]=hex_r[7:4]+1'b1;endalways@(posedgeclock)//按键4beginif(key_edge[3])hex_r[3:0]=hex_r[3:0]+1'b1;end//4位2进制数输出部分always@(posedgeclock)//按键5beginif(key_edge[4])bin_r[0]=~bin_r[0];endalways@(posedgeclock)//按键6beginif(key_edge[5])bin_r[1]=~bin_r[1];endalways@(posedgeclock)//按键7beginif(key_edge[6])bin_r[2]=~bin_r[2];endalways@(posedgeclock)//按键8beginif(key_edge[7])bin_r[3]=~bin_r[3];end//数码管扫描显示部分always@(posedgeclock)//定义上升沿触发进程beginif(div_clk)cnt3=cnt3+1'b1;endalways@(posedgeclock)beginif(div_clk)begincase(cnt3)//选择扫描显示数据3'd0:disp_dat=hex_r[15:12];//第一个数码管3'd1:disp_dat=hex_r[11:8];//第二个数码管3'd2:disp_dat=hex_r[7:4];//第三个数码管3'd3:disp_dat=hex_r[3:0];//第四个数码管3'd4:disp_dat=data[15:12];//第五个数码管3'd5:disp_dat=data[11:8];//第六个数码管3'd6:disp_dat=data[7:4];//第七个数码管3'd7:disp_dat=data[3:0];//第八个数码管endcasecase(cnt3)//选择数码管显示位3'd0:dig_r=8'b01111111;//选择第一个数码管显示3'd1:dig_r=8'b10111111;//选择第二个数码管显示3'd2:dig_r=8'b11011111;//选择第三个数码管显示3'd3:dig_r=8'b11101111;//选择第四个数码管显示3'd4:dig_r=8'b11110111;//选择第五个数码管显示3'd5:dig_r=8'b11111011;//选择第六个数码管显示3'd6:dig_r=8'b11111101;//选择第七个数码管显示3'd7:dig_r=8'b11111110;//选择第八个数码管显示endcaseendendalways@(disp_dat)begincase(disp_dat)//七段译码4'h0:seg_r=8'hc0;//显示04'h1:seg_r=8'hf9;//显示14'h2:seg_r=8'ha4;//显示24'h3:seg_r=8'hb0;//显示34'h4:seg_r=8'h99;//显示44'h5:seg_r=8'h92;//显示54'h6:seg_r=8'h82;//显示64'h7:seg_r=8'hf8;//显示74'h8:seg_r=8'h80;//显示84'h9:seg_r=8'h90;//显示94'ha:seg_r=8'h88;//显示a4'hb:seg_r=8'h83;//显示b4'hc:seg_r=8'hc6;//显示c4'hd:seg_r=8'ha1;//显示d4'he:seg_r=8'h86;//显示e4'hf:seg_r=8'h8e;//显示fendcaseendendmodule数控分频电路代码:modulepulse(clk,data,fout);//数控分频器inputclk;//时钟输入input[7:0]data;//预置分频数outputfout;//分频输出regfout_r;//输出寄存器reg[7:0]cnt8;//8位计数器regfull;//溢出标志位regcnt2;assignfout=fout_r;//分频输出always@(posedgeclk)beginif(cnt8==8'hff)begincnt8=data;//当cnt8计数计满时,输入数据Data被同步预置给计数器Cnt8full=1'b1;//同时使溢出标志信号full输出为高电平endelsebegincnt8=cnt8+1'b1;//否则继续作加1计数full=1'b0;//且输出溢出标志信号full为低电平endendalways@(posedgefull)beginif(full==1'b1)begincnt2=~cnt2;//如果溢出标志信号full为高电平,D触发器输出取反if(cnt2==1'b1)fout_r=1'b1;elsefout_r=1'b0;endendendmodule四、系统调试1、仿真调试(1)仿真波形图(见图4)图4数控分频器仿真波形(2)波形分析由波形图可以知道实验成功。2、实际调试(1)测试条件、管脚分配引脚分配(见表一)表一管脚分配图(2)测试结果及数据下载成功后蜂鸣器会开始鸣叫,数码管显示数值,在按下对于的按键后会发现蜂鸣器的鸣叫频率发生改变,同是数码管显示的数据开始变化。五、实验感想

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功