实验八 数控分频器的设计
数控分频器实验报告
《数控分频实验》姓名:谭国榕班级:12电子卓越班学号:201241301132一、实验目的1.熟练编程VHDL语言程序。
2.设计一个数控分频器。
二、实验原理本次实验我是采用书上的5分频电路进行修改,通过观察其5分频的规律进而修改成任意奇数分频,再在任意奇数分频的基础上修改为任意偶数分频,本次实验我分为了三个部分,前两部分就是前面所说的任意奇数分频和任意偶数分频,在这个基础上,再用奇数输入的最低位为1,偶数最低位为0的原理实现合并。
三、实验步骤1.任意奇数分频程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DIV1 ISPORT(CLK:IN STD_LOGIC;D:IN INTEGER RANGE 0 TO 255;K1,K2,K_OR:OUT STD_LOGIC);END;ARCHITECTURE BHV OF DIV1 ISSIGNAL TEMP3,TEMP4:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL M1,M2:STD_LOGIC;--SIGNAL OUT1,OUT2,OUT3:STD_LOGIC;BEGINPROCESS(CLK,TEMP3) BEGINIF RISING_EDGE(CLK) THENIF(TEMP3=D-1) THEN TEMP3<="00000000"; ELSE TEMP3<=TEMP3+1; END IF;IF(TEMP3=D-(D+3)/2) THEN M1<=NOT M1; ELSIF (TEMP3=D-2) THEN M1<=NOT M1; END IF; END IF;END PROCESS;PROCESS(CLK,TEMP4) BEGINIF FALLING_EDGE(CLK) THENIF(TEMP4=D-1) THEN TEMP4<="00000000"; ELSE TEMP4<=TEMP4+1; END IF;IF(TEMP4=D-(D+3)/2) THEN M2<=NOT M2; ELSIF (TEMP4=D-2) THEN M2<=NOT M2;END IF; END IF;END PROCESS;K1<=M1; K2<=M2; K_OR <=M1 OR M2;END BHV;此段程序最主要的部分为:PROCESS(CLK,TEMP3) BEGINIF RISING_EDGE(CLK) THENIF(TEMP3=D-1) THEN TEMP3<="00000000"; ELSE TEMP3<=TEMP3+1; END IF;IF(TEMP3=D-(D+3)/2) THEN M1<=NOT M1; ELSIF (TEMP3=D-2) THEN M1<=NOT M1; END IF; END IF;END PROCESS;PROCESS(CLK,TEMP4) BEGINIF FALLING_EDGE(CLK) THENIF(TEMP4=D-1) THEN TEMP4<="00000000"; ELSE TEMP4<=TEMP4+1; END IF;IF(TEMP4=D-(D+3)/2) THEN M2<=NOT M2; ELSIF (TEMP4=D-2) THEN M2<=NOT M2; END IF; END IF;END PROCESS;在这里,我通过研究书上的占空比为50%的5分频电路的程序,通过实验发现了一个规律,就是书上的C1="100",在奇数任意分频中为输入信号减一,即D-1,而在第二个if里,5分频为C1="001",7分频为C1="010",9分频为C1="011",以此类推,则不难发现:5-4=1;7-5=2;9-6=3.。
用LPM设计8位数控分频器和四位乘法器
河南工业大学EDA技术实验报告专业电科班级1301 姓名田昂昂学号201316030103 实验地点6316+ 6515 实验日期2015-11-13 成绩评定
一、实验项目
用LPM设计8位数控分频器和四位乘法器
二、实验目的
1.熟悉LPM参数可设置模块的调用。
2.学习8位数控分频器和四位乘法器的设计、分析和测试方法。
3.独立完成8位数控分频器和四位乘法器的并认真书写实验报告。
三、实验原理
8位数控分频器:
四位乘法器:
四、仿真结果及分析8位数控分频器
四位乘法器
乘数a[3..0]=0;被乘数b[7..4]=1;q[7..0]输出0。
乘数a[3..0]=2;被乘数b[7..4]=3;q[7..0]输出6。
五、硬件验证过程及结果分析
8位数控分频器
下载后开始连线操作,d[7..0]端口接输入信号,q[7..0]接输出信号,clock接时钟信号,aclr,cout,updown,clk_en,接能控制高低电平的输入信号,正确接线后,将会看到有两位数码管开始计数,当最低位计到F后,发生跳变变为4,重新开始计数。
四位乘法器
连接好线路后,按下输入信号的按钮改变输入信号的数值的大小,最左边的两个数码管显示乘数紧挨这的另外两个数码管显示被乘数,另外的数码管显示结果,按动按钮使乘数为3被乘数为2,显示结果为6,硬件验证成功。
六、实验总结
此次试验是用LPM实现的,用LPM来作8位数控分频器和四位乘法器相对于用VHDL语言编程较简单,只需要在主界面选择需要的兆功能块,在参数设置对话框中选择合适的参数,将设计好的模块在原理图编辑界面中调用出来,连接输入输出端口及其它门电路即可。
数控分频器的VerilogHDL设计
附表1:
广州大学学生实验报告
开课学院及实验室:物理与电子工程学院-电子楼317室2016年 5 月 5 日
if (!RST) begin Q1<=0; FULL<=0; end
else if (LD) begin Q1<=D; FULL<=1; end
else begin Q1<=Q1+1; FULL <=0; end
assign LD=(Q1==4'B0000);
assign PM=FULL;
assign DOUT=Q1;
endmodule
四、仿真结果:
由波形图可见,当RST为低电平时,LD置位,装载预置数5(0101);当计满值为0000(图中DOUT:1111后的一小段),LD置位并输出一次脉冲PM,然后加载预置数,继续计数。
五、引脚锁定:
六、硬件测试结果:
下载程序到目标机
注:键4-键1为设置预置数
七、实验心得:
通过本次实验,使我明白了数控分频器的工作原理,并通过蜂鸣器直观地对比了不同的分频效果。
巩固了理论知识和实验流程,提高了效率,为后续实验打下良好的基础。
项目名称”栏以上部分统一。
EDA数控分频器设计的实验报告
实验报告
专业班级:电子092姓名:林明辉学号:200901122
实验课程:EDA技术实用教材
项目名称:
一.实验目的:1.了解并掌握QuartusⅡ使用方法
2.学Байду номын сангаас8位数码扫描器显示电路设计
3.实验箱的运用
实验原理:其中每个数码管的8个段:h、g、f、e、d、c、b、a(h是小数点)都分别连在一起,8个数码管分别由8个选通信号k1、k2、…k8来选择。被选通的数码管显示数据,其余关闭。如在某一时刻,k3为高电平,其余选通信号为低电平,这时仅k3对应的数码管显示来自段信号端的数据,而其它7个数码管呈现关闭状态。根据这种电路状况,如果希望在8个数码管显示希望的数据,就必须使得8个选通信号k1、k2、…k8分别被单独选通,并在此同时,在段信号输入口加上希望在该对应数码管上显示的数据,于是随着选通信号的扫变,就能实现扫描显示的目的。
二.实验步骤:1.先编好底层文件—数控分频器程序
2.编好8位数码扫描显示电路程序
3.把两个底层文件设置成符号文件
4.调用以上两个符号文件连成以下电路图
三.实验仪器:电脑一台
实验箱一个
四.数据记录及处理:
EDA实验五数控分频器的设计(程序)
三、实验效果分析(包过仪器设备等使用效果)三、实验效果分析:①八分频,十一分频器的程序主要包括两部分,一是先设定好计数的位数,让计数器计数,当计数满时产生溢出,使溢出标志位为高电平;二是当溢出标志位为1时,D 触发器的D状态发生翻转,从而产生高低电平的变化,而达到分频的目的,计数初值的不同,计数满所要的时钟个数也就不同,D触发器电平翻转所用的时间也就不同,频率也就不同。
②循环计数器是给定时器赋不同的初值,不同初值溢出所用的时间也就不同,状态翻转所用时间也就不同,从而达到实现不同音频循环输出的目的。
③硬件测试:写好程序连接好电路后电路能够很好的实验16种不同音频之间的循环输出,说明实验程序正确,对应的RTL仿真图形也正确。
④实验例序中的P_DIV进程的作用是当计数满产生溢出时让D触发器的状态发生翻转,D触发器状态的翻转的频率就是分频器输出的频率。
也就是做分频器的频率输出作用。
教师评语指导教师年月日江西师范大学物理与通信电子学院教学实验报告专业:电子信息工程2011年月日实验名称数控分频器的设计指导老师姓名年级学号成绩一、预习部分1、实验目的2、实验基本原理3、主要仪器设备(包含必要的元器件、工具)一、实验目的:1.了解数控分频器的设计原理以及分析和测试方法。
2.学会构造使用不同功能的数控分频器械。
二、实验基本原理:给定时器设定好初值,当计数满时溢出,产生溢出后溢出标志位D触发器取反,这样当设定不同的初值时产生一次溢出所用的时间也就不同,频率也就随之改变。
通过设定不同的初值从而产生不同的分频。
三、主要仪器设备电脑,实验箱二、实验操作步骤1.实验数据、表格及数据处理2.实验操作过程(可以用图表示)3.结论1.实验数据、表格及数据处理如下:十一分频器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sy52 isport(clk:in std_logic;d:in std_logic_vector(10 downto 0);fout:out std_logic);end ;architecture one of sy52 issignal full :std_logic;beginp_reg:process(clk)variable cnt8:std_logic_vector(10 downto 0);beginif clk'event and clk='1' thenif cnt8="11111111111"thencnt8:=d;full<='1';elsecnt8:=cnt8+1;full<='0';end if;end if;end process p_reg;p_div:process(full)variable cnt2:std_logic;beginif full'event and full='1'thencnt2:=not cnt2;if cnt2='1'thenfout<='1';elsefout<='0';end if ;end if ;end process p_div;end 2、实验操作过程如下:八分频器:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sy51 isport(clk:in std_logic;d:in std_logic_vector(7 downto 0);fout:out std_logic);end ;architecture one of sy51 issignal full :std_logic;beginp_reg:process(clk)variable cnt8:std_logic_vector(7 downto 0);beginif clk'event and clk='1' thenif cnt8="11111111"thencnt8:=d;full<='1';elsecnt8:=cnt8+1;full<='0';end if;end if;end process p_reg;p_div:process(full)variable cnt2:std_logic;beginif full'event and full='1'thencnt2:=not cnt2;if cnt2='1'thenfout<='1';elsefout<='0';end if ;end if ;end process p_div;end ;。
数控分频器设计
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源代码按键控制电路代码:module key_led(clock,key,led,hex,bin,seg,dig,ledin,data);input clock; //系统时钟(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; //数码管扫描显存reg div_clk; //分频时钟,用于消抖和扫描wire[7:0]key_edge; //按键消抖输出//信号输出assign hex = hex_r;assign bin = bin_r;assign seg = seg_r;assign dig = dig_r;assign led = ~{ledin,bin_r};//时钟分频部分always @(posedge clock)beginif (count < 17'd120000)begincount <= count + 1'b1;div_clk <= 1'b0;endelsecount <= 17'd0;div_clk <= 1'b1;endend//按键消抖部分always @(posedge clock)beginif(div_clk)begindout1 <= key;dout2 <= dout1;dout3 <= dout2;endend//按键边沿检测部分always @(posedge clock)beginbuff <= dout1 | dout2 | dout3;endassign key_edge = ~(dout1 | dout2 | dout3) & buff;//4位16进制数输出部分always @(posedge clock) //按键1 beginif(key_edge[0])hex_r[15:12] <= hex_r[15:12] + 1'b1;endalways @(posedge clock) //按键2 beginif(key_edge[1])hex_r[11:8] <= hex_r[11:8] + 1'b1;always @(posedge clock) //按键3 beginif(key_edge[2])hex_r[7:4] <= hex_r[7:4] + 1'b1;endalways @(posedge clock) //按键4 beginif(key_edge[3])hex_r[3:0] <= hex_r[3:0] + 1'b1;end//4位2进制数输出部分always @(posedge clock) //按键5 beginif(key_edge[4])bin_r[0] <= ~bin_r[0];endalways @(posedge clock) //按键6 beginif(key_edge[5])bin_r[1] <= ~bin_r[1];endalways @(posedge clock) //按键7 beginif(key_edge[6])bin_r[2] <= ~bin_r[2];endalways @(posedge clock) //按键8 beginif(key_edge[7])bin_r[3] <= ~bin_r[3];//数码管扫描显示部分always @(posedge clock) //定义上升沿触发进程beginif(div_clk)cnt3 <= cnt3 + 1'b1;endalways @(posedge clock)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; //选择第八个数码管显示endcaseendalways @(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; //显示f endcaseendendmodule数控分频电路代码:module pulse(clk,data,fout); //数控分频器 input clk; //时钟输入 input[7:0]data; //预置分频数reg fout_r; //输出寄存器reg[7:0] cnt8; //8位计数器reg full; //溢出标志位reg cnt2;assign fout = fout_r; //分频输出always @(posedge clk)beginif(cnt8 == 8'hff)begincnt8 <= data; //当cnt8计数计满时,输入数据Data被同步预置给计数器Cnt8 full <= 1'b1; //同时使溢出标志信号full输出为高电平endelsebegincnt8 <= cnt8 + 1'b1;//否则继续作加1计数full <= 1'b0; //且输出溢出标志信号full为低电平endendalways @(posedge full)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)波形分析由波形图可以知道实验成功。
数控分频器的设计实验报告
1 引言计算机组成原理与设计是计算机通信与技术专业本科生的必修课程。
在完成理论学习和必要的实验后,本科学生掌握了它的基本原理和各种基本功能的应用,但对硬件实际应用设计和其完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
计算机组成原理与设计的课程设计既要让学生巩固课本学到的理论,还要让学生学习硬件电路设计和用户程序设计,同时学习查阅资料、参考资料的方法。
计算机原理与设计的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。
1.1 设计的目的本次设计的目的就是了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。
通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。
通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标。
1.2 需求分析这次课程设计的题目是实现基于CPLD的数控分频器及其应用。
设计乐曲程序能实现演奏电路,并用原理图方法设计数字时钟,使电路具有校时校分的功能与传统的纯硬件方法相比简单有效。
此设计可以适应多家可编程逻辑器件,便于组织大规模的系统设计;便于设计的复用继承和升级更新,具有广阔的应用前景。
1.3 设计的基本内容传统数字电路设计是利用标准集成电路、电路板来实现电路功能。
可编程逻辑器件和EDA技术使设计方法发生了质的变化。
把以前“电路设计+硬件搭试+调试焊接”转化为“功能设计+软件模拟+仿真下载”。
利用EDA开发平台,采用可编程逻辑器件CPLD/FPGA使硬件的功能可通过编程来实现,这种新的基于芯片的设计方法能够使设计者有更多机会充分发挥创造性思维,实现多种复杂数字逻辑系统的功能,将原来由电路板设计完成的工作放到芯片的设计中进行,减少了连线和体积,提高了集成度,降低了干扰,大大减轻了电路设计和PCB 设计的工作量和难度,增强了设计的灵活性,有效地提高了工作效率,MUSICFLOW增加了系统的可靠性和稳定性,提高了技术指标。
数控分频器的设计PPT课件
实验步骤
3、将设计项目设置成工程文件 将数控分频器设置为工程文件。 4、选择目标器件并编译
首先在Assign选项的下拉菜单中选择器件选择项Device, 此窗口的Device Family是器件序列栏, 应该首先在此拦中选定目标器件对应的序列名,为了选择 EPF1K30TC144-3器件,应将此栏下方标有 Show only Fastest Speed Grades的勾消去, 以便显示出所有速度级别的器件。完成器件选择后,按OK键。
日本通产省1991年开始启动一项为期10年、 耗资250亿日元 的微型 大型研 究计划 ,研
制两台样机,一台用于医疗、进入人 体进行 诊断和 微型手 术,另 一台用 于工业 ,对飞 机发动 机和原 子能设 备的微 小裂纹 实施维 修
。该计划有筑波大学、东京工业大学 、东北 大学、 早稻田 大学和 富士通 研究所 等几十 家单位 参加。
梁、执行机构以及微型泵、微型喷嘴 、湿度 、流量 传感器 以及多 种光学 器件。 美国加 州理工 学院在 飞机翼 面粘上 相当数 量的1mm
的微梁,控制其弯曲角度以影响飞机 的空气 动力学 特性。 美国大 批量生 产的硅 加速度 计把微 型传感 器(机械 部分) 和集成 电路(电
信号源、放大器、信号处理和正检正 电路等) 一起集 成在硅 片上3m m×3m m的 范围内 。日本 研制的 数厘米 见方的 微型车 床可加 工精
微型机械在国外已受到政府部门、
企业界、高等学校与研究机构的高度 重视。 美国MIT、Ber keley、 Stanfor d\AT&T的15名科学 家在上 世纪八 十年代 末提出" 小机器
、大机遇:关于新兴领域--微动力学 的报告" 的国家 建议书 ,声称" 由于微 动力学 (微系 统)在美 国的紧 迫性, 应在这 样一个 新的重
分频器设计报告
数控分频器设计报告一、设计目的学习数控分频器的设计、分析和测试方法。
以quartusⅡ为开发平台,用VHDL语言和原理图结合的方法设计占空比为50%的5分频电路、6分频电路和5.5分频电路,通过功能选择键选择需要的分频比。
二、功能描述CLK输入为待分频的信号。
当S1S0输入为时,该数控分频器输出分频比为;当S1S0输入为时,该数控分频器输出分频比为;当S1S0输入为时,该数控分频器输出分频比为;三、设计原理数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。
用VHDL语言设计占空比为50%的任意奇数次、偶数次分频电路,用原理图输入法设计5.5分频电路,通过3选一数据选择器选择需要的分频电路,从而达到实验目的。
四、设计流程(1)占空比为50%的5分频电路1、新建文件夹d:\fenpin52、打开quartusⅡ创建工程fenpin53、新建vhdl文本,输入设计程序(见附1),保存为fenpin5.vhd4、启动编译,建立仿真波形图(见附2)5、将该5分频电路封装设置成可调用的元件。
附图1:附图2:(2)占空比为50%的6分频电路1、新建文件夹d:\fenpin62、打开quartusⅡ创建工程enpin63、新建vhdl文本,输入设计程序(见附3),保存为fenpin6.vhd4、启动编译,建立仿真波形图(见附4)5、将该6分频电路封装设置成可调用的元件。
附图3:附图4:(3)5.5分频电路1、用VHDL输入法设计模为6的计数器M6并设置为可调用元件(VHDL文件见附5)。
2、设计D触发器DFF,实现其clk上升沿到来时Q输出取反(附6)。
3、新建文件夹d:\fenpin3,将计数器M6和触发器DFF的vhd文件和bsf文件复制到fenpin3文件夹下,打开quartusⅡ创建工程fenpin34、设计5,5分频电路的顶层文件(附7),保存为fenpin3.bdf5、启动编译,建立仿真波形图(见附8)6、将该5.5分频电路封装设置成可调用的元件。
实验八8分频器的设计与实现
实验八8分频器的设计与实现一.实验目的1.使用ISE软件设计并仿真;2.学会程序下载。
二.实验内容使用ISE软件进行8分频器的设计与实现。
三.实验步骤1. 编写文本文件并编译2. 软件仿真3. 进行硬件配置四.实验原理1. ISE软件是一个支持数字系统设计的开发平台。
2. 用ISE软件进行设计开发时基于相应器件型号的。
注意:软件设计时选择的器件型号是与实际下载板上的器件型号相同。
3. 8分频器的真值表如图8-1所示,其最高位q2的输出就是对输入信号的8分频。
本实验中用Verilog语句来描述。
图8-1 8分频器真值表新建工程双击桌面上“ISE Design Suite 14.7”图标,启动ISE软件(也可从开始菜单启动)。
每次打开ISE 都会默认恢复到最近使用过的工程界面。
当第一次使用时,由于还没有历史工程记录,所以工程管理区显示空白。
选择File New--Project选项,在弹出的对话框中输入工程名称并指定工程路径。
点击Next按钮进入下一页,选择所使用的芯片及综合、仿真工具。
计算机上安装的所有用于仿真和综合的第三方EDA工具都可以在下拉菜单中找到。
在图中我们选用了Spartan6 XC6SLX16芯片,采用CSG324封装,这是NEXYS3开发板所用的芯片。
另外,我们选择Verilog 作为默认的硬件描述语言。
再点击Next按钮进入下一页,这里显示了新建工程的信息,确认无误后,点击Finish就可以建立一个完整的工程了。
设计输入和代码仿真在工程管理区任意位置单击鼠标右键,在弹出的菜单中选择New Source命令,选择Verilog Module输入,并输入Verilog文件名。
单击Next按钮进入端口定义对话框。
其中Module Name栏用于输入模块名,这里是count3a,下面的列表框用于端口的定义。
Port Name表示端口名称,Direction表示端口方向(可选择为input、output或inout),MSB表示信号最高位,LSB表示信号最低位,对于单信号的MSB 和LSB不用填写。
(数控加工)数控分频器
(数控加工)数控分频器壹题目要求和方案论证21.1程序计数分频器21.1.1题目要求21.1.2 方案论证21.2(实训题题目)波形发生器和计数器4 1.2.1题目要求41.2.2方案论证4二电子线路设计和实现62.1程序计数分频器电路设计62.2波形发生器和计数器电路设计6三结果和分析83.1程序计数分频器的实现83.2.1波形发生和计数器的实现83.2.2 实际效果10四总结和体会12参考文献13附录14波形发生和计数器焊接PCB图15是低电平时,不论JK端输入什么电平,输出端,正是因为该芯片有移位寄存器的功能,再加上译码器,要实现分频器的功能就不成问题了,所以要实现分频器的关键在移位寄存器上。
图274LS195时序图1.2(实训题题目)波形发生器和计数器1.2.1题目要求根据给定的用LM324及其给定参数的电阻、电位器、电容组成的方波-三角波产生电路原理图及其PCB板,分析电路结构,要求如下:(1)根据模拟电路和数字电路理论分析电路基本功能,得到方波和三角波频率计算式;(2)用Multisim软件进行电路仿真,改变电位器的阻值,查见计数器的输出状态;且在电容C1为1uF,电位器R21阻值为100K和50K时用虚拟示波器记录方波和三角波的波形,且分别记录其频率。
(3)焊接电路且测试。
在电容C1为1uF,电位器R21阻值为100K和50K时用数字示波器记录方波和三角波的波形,且分别记录其频率。
当计数显示以1HZ频率时,计下当前电位器的阻值。
1.2.2方案论证表374LS90芯片功表图374LS90芯片分析74LS90芯片的引脚图和功能表可知。
要实现计数功能,必须将74LS90的2、3引脚中的任意壹个和6、7引脚中的任意壹个接低电平,剩下的俩脚随意接。
为此在设计计数部分电路的时候,将2、3引脚和6、7引脚分别连接起来。
6、7引脚接低电平,2、3引脚接于有开关控制的高电平。
当开关闭合时,2、3引脚接入的是高电平,实现不了计数功能。
数控分频器设计实验报告
实验目的与要求实验名称:数控分频器设计实验目的:将4位计数器改成8位计数器形式,完成全部仿真测试和硬件测试内容实验原理给定计数模N,当计数到N时,对计数器发出一个清零信号,使其从头开始计数,以此循环往复如果控制的是计数器的同步清零端,则为计数器的同步清零模式.如果控制的是异步清零端,则为计数器的异步清零模式.对于给定的模M,当计数满到溢出时,或限制其计数到某一数值时,发出一个信号,控制计数器的加载预置端,使计数器加载M,如果控制的是计数器的同步加载端,则为同步加载模式,如果控制的是计数器的异步加载端,则为异步加载计数模式1、实验内容编辑和输入设计文件新建文件夹——输入源程序——文件存盘源程序A、module FDIV0(CLK,PM,D,DOUT,RST);input CLK;input RST;input[7:0]D;output PM;output [7:0] DOUT;reg[7:0]Q1;reg FULL;(*synthesis,keep*)wire LD;always @(posedge CLK or negedge RST)beginif(!RST)begin Q1<=0;FULL<=0;endelse if(LD)begin Q1<=Q1+1;FULL<=0;endendassign LD=(Q1==8'B11111111);assign PM=FULL;assign DOUT=Q1;endmoduleB、module fdiv01(CLK,PM,D,DOUT,RST);input CLK;input RST;input[7:0]D;output PM;output [7:0] DOUT;reg[7:0]Q1;reg FULL;(*synthesis,probe_port,keep*)wire LD;always @(posedge CLK or posedge LD or negedge RST )begin if(!RST)begin Q1<=0;FULL<=0;endelse if(LD)begin Q1<=D;FULL<=1;endelse begin Q1<=Q1+1;FULL<=0;endendassign LD=(Q1==8'B00000000);assign PM=FULL;assign DOUT=Q1;endmoduleC、module fdiv02(CLK,PM,D);input CLK;input [7:0] D;output PM;(*synthesis,probe_port,keep*)[7:0] Q1;reg FULL;(*synthesis,probe_port,keep*)wire RST;always @ (posedge CLK or posedge RST)beginif (RST)begin Q1<=0;FULL<=1;endelse begin Q1<=Q1+1;FULL<=0;endendassign RST = (Q1==D);assign PM=FULL;endmoduleD、module fdiv03(CLK,PM,D);input CLK;input [7:0] D;output PM;(*synthesis,probe_port,keep*)[7:0] Q1;reg FULL;(*synthesis,probe_port,keep*)wire RST;always @ (posedge CLK)beginif (RST)begin Q1<=0;FULL<=1;endelse begin Q1<=Q1+1;FULL<=0;endendassign RST = (Q1==D);assign PM=FULL;endmodule2、总结与体会创建工程打开并建立新工程管理窗口——将设计文件加入工程中——选择目标芯片——工具设置——结束设置3、全程编译前约束项目设置选择FPGA目标芯片——选择配置器件的工作方式——选择配置器件和编程方式——选择目标器件引脚端口状态——选择Verilog语言版本4、全程综合与编译Processing——Start Compilation启动全程编译5、仿真测试AB、C、D实验总结与体会通过这次实验学会了将4位计数器改成8位计数器形式,完成全部仿真测试和硬件测试内容。
实验八,用LPM设计可调的8位数控分频器和4位乘法器(1)
河南工业大学EDA技术实验报告专业电科班级1304姓名学号201316030433实验地点6316+ 6515 实验日期2015-11-13 成绩评定一、实验项目实验八用LPM设计可调的8位数控分频器和4位乘法器二、实验目的1.基于LPM_COUNTER的数控分频器设计:数控分频器的功能要求为:若在其输入端给予不同的数据,输出脉冲具有相应的对输入时钟的分频比。
2.基于LPM_ROM的4位乘法器的设计:硬件乘法器有多种实现方法,相比之下,由高速RAM构成的乘法表方式的乘法器的运算速度最快。
本次实验就是利用原理图的绘制方法设计一个4位乘法器。
三、实验原理LPM _ROM实验原理图如下:LPM_ COUNTER实验原理图如下:图3 ROM数据表四、仿真结果及分析LPM_COUNTER的数控分频器的仿真波形图如下:基于LPM_ROM的4位乘法器的仿真波形如下:由图可知,当输入为1和9的时候,输出为9;当输入为2和6时,输出为12,等等,则可知输出结果是正确的的,则仿真波形为正确的。
五、硬件验证过程及结果分析对于LPM_COUNTER的数控分频器,首先按照原理图输入的设计步骤,通过元件输入窗口在原理图编辑窗口中调用兆功能块,按照上面的原理图方式连接起来,其中计数器LPM_COUNTER模块的参数设置可以自己设置,然后进行编译,仿真,这些都成功后就可以进行硬件验证了。
引脚锁定仍然和以前一样,将输入输出引脚锁定到合适的位置,然后编译,下载。
这样就可以将编译好的程序下载到试验箱上步骤:连接USB下载线,点击Tools选择Programmer.进入下载环境,在Hardware setup 选择USB,然后选择START 等待下载完成。
硬件验证:将十芯线一端插在之前锁定的q[0..7]引脚上,另一端插在24位输出显示HEX模块的数码管引脚上。
将十芯线一端插在之前锁定的d[0..7]引脚上,另一端插在24位输出显示HEX模块的D0~D8引脚上。
数控分频器的设计
数控分频器的设计一、实验目的:学习数控分频器的设计和测试方法。
二、实验原理:数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。
该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数(初始计数值)设定不同的值,计数器以此预置数为初始状态进行不同模值的计数,当计数器的状态全为1时,计数器输出溢出信号。
用计数器的溢出信号作为输出信号或输出信号的控制值,使输出信号的频率受控于输入的预置数。
电路输出波形图:三、实验内容:1)根据实验原理画出电路框图,并计算在不同预置数时输出信号的频率与时钟频率的比值。
------------------------------------------------------------------------------------------------------------- 原理图:数控分频器输出频率与输入时钟的关系:当输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。
a任意小数都可以表示成n?形式,其中ab脉冲数为P,则有以下关系:a???nb?a?M??n???P????Pbb?????n?b?a???n?1?a? ????Pb??上式表明分频器进行b次n分频时,设法多输入a个脉冲。
或者说在b个脉冲输入周期中,进行b-a次n分频和a次n+1分频。
这就是小数分频的基本原理。
n和n+1也称为分频模式。
利用上述小数分频的方法,同样也可以实现整数分频,即令a=0,就可以完成整数N分频2)编写实现数控分频器的VHDL程序。
要求输出信号的占空比尽量为50%。
--------------------------------------------------------------------------- 程序:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY DVF IS PORT(CLK:IN STD_LOGIC;D:STD_LOGIC_VECTOR(3STD_LOGIC); END;ARCHITECTURE one OF DVF IS SIGNAL FULL:STD_LOGIC; BEGINP_REG:PROCESS(CLK)VARIABLE CNT4:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINIF CLK'EVENT AND CLK='1' THEN IF CNT4=\CNT4:=D; FULL<='1';ELSE CNT4:=CNT4+1; FULL<='0'; END IF; END IF;END PROCESS P_REG; P_DIV:PROCESS(FULL) VARIABLE CNT2:STD_LOGIC; BEGINDOWNTO0);FOUT:OUTIF FULL'EVENT AND FULL='1' THEN CNT2:=NOT CNT2;IF CNT2='1' THEN FOUT<='1'; ELSE FOUT<='0'; END IF; END IF;END PROCESS P_DIV; END;仿真波形:管脚锁定:信号旧试验箱管脚号连接的器件 clk 43 Clk1 D(3) 30 SW1 D(2) 35 SW2 D(1) 36 SW3 D(0) 37 SW4 Fout 29 LED12新试验箱No.5 管脚号连接的器件 28 CLK0 233 SW1 234 SW2 235 SW3 236 SW4 12 LED8感谢您的阅读,祝您生活愉快。
eda实验数控分频器
数控分频器一实验目的:学习数控分频器的设计,分析和测试方法。
二实验原理:数控分频器的功能就是当在输入端给定不同输入数值时,将对输入的时钟信号有不同的分频比,数控分频器就是用计数值可并行预置的加法计数器设计完成的,方法是将计数器溢出位与预置数加载输入信号相接即可。
三实验内容:(1)打开quartus,在菜单中点击new,选择vhdl,在出现的窗口中输入vhdl代码并保存。
其中代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY EX9 ISPORT (clk : IN STD_LOGIC; -- IO30(P125)d : IN STD_LOGIC_VECTOR(7 DOWNTO 0); -- IO47..IO40 (P133, P132, P131, P130, P121, P120, P119, P118)pfull: OUT STD_LOGIC; -- IO01(P38)fout : OUT STD_LOGIC -- IO00(P37));END EX9;ARCHITECTURE behv OF EX9 ISSIGNAL full: STD_LOGIC;BEGINp_reg:PROCESS(clk)V ARIABLE cnt8: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINIF clk'EVENT AND clk = '1' THENIF cnt8 = "11111111" THENcnt8 := D; -- 计数满后置入初值重新计数full <= '1'; -- 置计数满信号ELSEcnt8 := cnt8 + 1;full <= '0';END IF;END IF;pfull <= full; -- 输出full用于观察END PROCESS p_reg;p_div: -- 将full信号除2,生成方波信号PROCESS(full)V ARIABLE cnt: STD_LOGIC;BEGINIF full'EVENT AND full = '1' THENcnt := NOT cnt;END IF;fout <= cnt;END PROCESS p_div;END behv;(2)创建工程之后对编译之前的参数进行设置,启动start compilation项,其编译结果如下:(3)时序仿真:对仿真前参数设置后启动start simulation,直到出现simulation was successful,仿真结束。
090602051尚建光三
数控分频器的设计
一、实验目的
学习数控分频器的设计、分析和测试方法。
二、实验原理
数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号由不同的分频比,数控分频器即使用计数值课并行的加法计数器设计完成的,方法是将计数溢出位预置数加载输入信号相接即可,详细设计程序如例3-7所示。
三、实验内容
1、在实验系统上硬件验证例3-7 的功能。
课选实验电路模式1;键2和键1负责输入8位预置数D ;clk 由clock0输入,频率选65536hz ;输出fout 接扬声器spker 。
编译下载后硬件测试:改变键2/键1的输入值,课听到不同音调。
2、利用两个例3-7给出的模块设计一个电路,使其输出方波的正负脉宽的宽度分别由两个8位输入数据控制。
四、实验步骤
实验内容1 建立工作库文件和编辑设计文件 (1) 新建文件夹 命名为dvf (2) 输入源程序例3-7如下
课程名称EDA 技术
实验成绩
指导教师
实 验 报 告
院系 信院电子系 班级 09普专电子 学号 090602051 姓名 尚建光 日期 2011-11-16
(3) 文件存盘,命名为dvf.vhd (4) 创建工程 、综合 (改错) (5) 时序仿真 其波形如下
(6) 引脚配置如下
(7) 配置文件下载
实验内容2 建立工作课库文件和编辑设计文件
(1) 新建文件夹命名为dflh
(2) 输入源程序如下
(3) 文件存盘,命名为dflh.vhd 。
(4) 创建工程 综合(改错)。
(5) 时序仿真波形如下
(6) 引脚配置如下
(7) 配置文件下载。
FPGA实验——8位数码显示频率计设计
哈尔滨理工大学软件学院实验报告课程FPGA题目8位数码显示频率计设计(4学时)班级集成12-2班专业集成电路设计与集成系统学生学号12140202272014年10月22日实验三8位数码显示频率计设计实验三8位数码显示频率计设计(4学时)实验目的^设计8位频率计,学习较复杂的数字系统的设计方法。
实验原理及内容二根据频率的定义和频率测量的基本原理。
测定信号的频率必换有一个脉宽为1秒的输入信号脉冲计数允许的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零,为下一测频计数周期作好准备。
实验步骤:i设]十生成1秒时钟信号“CLK2 •设计测频控制信号发生器一3■设#1秒计磁值锁存器--4 •设计32位一进制计数器一彳设计十六进制7段译码器一FTCTRL; REG32B; COUNTER32B Decoder6 ■设计生成lKHz或lOKHz待测信号一Fin 7•気成频率计设计、仿真和妓件实现.频率计电路框图实验目的:LOAD FTCTRLCLKKRST_CWTCNT_ENJ32 1- jiCLR ENABLoourCOUNTER328F,n频率计测频控制器FTCTRL 测控时序图^-CLKK上斤泪fit 仔REG32BK _______ ™4Fin-o LOAD实验原理及内容:根据频率的定义和频率测量的基本原理。
测定信号的频率必须有一个脉宽为1秒的输入信号脉冲计数允许 的信号;1秒计数结束后,计数值被锁入锁存器,计数器清零, 为下 一测频计数周期作好准备。
实验步骤:1•设计生成1秒时钟信号-- 2•设计测频控制信号发生器-- 3•设计1秒计数值锁存器 --4•设计32位二进制计数器-- 5•设计十六进制7段译码器--6•设计生成1KHz 或10KHz 待测信号-- Fin7•完成频率计设计、仿真和硬件实现。
实验程序:CLK FTCTRL; REG32B; COUNTER32B Decodermodule frequenee (input output reg[31:0]freq_out //频率输出);reg [31:0] cnt1,num; //cnt1 ,分频作用,产生脉宽一秒基准时钟 // num,用来计算1s 内待测信号所发出的脉冲数用来计数/**** 产生占空比为50%,周期为2s 的单位脉冲sec ****/always @ (posedge clk) beginif(cnt 仁=50_000_000)// 50000000分频,产生脉宽1s 脉宽基准时钟(要基准时钟为 50M)begin cnt1<=0;inputCLK_X,// 待测信号rst , reg sec;//sec 用来产生周期为2s 脉宽1s 基准时钟reg state;// 和 sec 共同为使能信号sec<=~sec;endelsecnt1<=cnt1+1;end/**** 统计待测信号在单位时间1s 内产生的脉冲数****/always @ (posedge CLK_X )beginif (!rst)beginfreq_out<=0;num<=0;state<=1;endelsebeginif(sec) // sec为高电平期间(1s),统计待测信号产生的脉冲数beginnum<=num+1;state<=0;endelse // sec为低电平期间(1s),读取待测信号产生的脉冲数begincase(state)0: begin freq_out<=num; state<=1; end // 读取脉冲数(由于freq为reg型,在下一次sec低电平到来之前,会一直保持当前值不变)1: num<=0; // 将num 清零,为下一个sec高电平期间脉冲数的统计做准备//endcaseend//如果待测时钟频,比 1 秒脉宽的基准时钟还小,才会出现一只增数字的情况,即num未来的及清零endend endmodulemodule newclk(clk,reset,clk_out);input clk,reset;output clk_out;reg clk_out;reg[100:0] count;parameter N = 5000; //分频产生1K HZ 脉的时钟always @ (posedge clk)if(!reset)begincount <= 1'b0;clk_out <= 1'b0;endelseif ( count < N/2 -1)begincount <= count + 1'b1;endelsebeginend endmodulemodule shili(outputreg[6:0]h1,input [3:0]c,input clk); count <= 1'b0;clk_out <= ~clk_out;always@(c) begincase(c[3:0])4'b0000:h1<='b1000000;4'b0001:h1<='b1111001;4'b0010:h1<='b0100100;4'b0011:h1<='b0110000;4'b0100:h1<='b0011001;4'b0101:h1<='b0010010;4'b0110:h1<='b0000010;4'b0111:h1<='b1111000;4'b1000:h1<='b0000000;4'b1001:h1<='b0010000;4'b1010:h1<='b0001000;4'b1011:h1<='b0000011;4'b1100:h1<='b1000110;4'b1101:h1<='b0100001;4'b1110:h1<='b0000110;4'b1111:h1<='b0001110;default : h1<='b1000000;endcaseend endmodulemodule top_sevev( output [63:0]H, 须为wire 行变量input [31:0]freq, input clk);shili seven_0( H[7:0],freq[3:0],clk); 七段数码管的模块的实例化shiliseven_1( H[15:8],freq[7:4],clk);shiliseven_2( H[23:16],freq[11:8],clk);shiliseven_3( H[31:24],freq[15:12],clk);shiliseven_4( H[39:32],freq[19:16],clk);shiliseven_5( H[47:40],freq[23:20],clk);shili// H 必// 八个seven_6( H[55:48],freq[27:24],clk);shiliseven_7( H[63:56],freq[31:28],clk);en dmodule原理图:实验结果:1000Hz的测量结果100000Hz的测量结果。
数控分频器实验报告
数控分频器实验报告数控分频器实验报告引言:数控分频器是一种用于控制电机转速的设备,它可以根据输入的指令来调节电机的转速,广泛应用于工业生产中。
本实验旨在通过搭建数控分频器电路并进行实际操作,探究其原理和工作方式。
一、实验目的本实验的主要目的是了解数控分频器的基本原理,掌握其正确的使用方法,通过实际操作加深对其工作原理的理解。
二、实验原理数控分频器是通过将输入的脉冲信号进行分频来控制电机转速的。
其工作原理主要包括以下几个方面:1. 输入信号:数控分频器的输入信号一般为脉冲信号,其频率和占空比可以通过外部设备调节。
2. 分频电路:数控分频器内部的分频电路可以将输入信号进行分频,将高频的输入信号转换为低频的输出信号。
3. 控制电路:数控分频器的控制电路可以根据输入的指令来调节输出信号的频率和占空比,从而控制电机的转速。
三、实验步骤1. 搭建电路:根据实验指导书上的电路图,连接数控分频器和电机,确保电路连接正确。
2. 设置参数:根据实验要求,设置输入信号的频率和占空比,以及输出信号的频率和占空比。
3. 运行实验:按下启动按钮,观察电机的转速变化,并记录相关数据。
四、实验结果在实验过程中,我们通过调节输入信号的频率和占空比,以及输出信号的频率和占空比,成功控制了电机的转速。
通过实验数据的记录和分析,我们发现输入信号的频率越高,电机的转速越快;而输入信号的占空比则会影响电机的平均转速。
五、实验总结通过本次实验,我们深入了解了数控分频器的工作原理和使用方法。
数控分频器作为一种重要的工业控制设备,可以灵活地控制电机的转速,提高生产效率。
在实际应用中,我们需要根据具体的需求来设置输入信号和输出信号的参数,以达到最佳的控制效果。
总之,数控分频器是一种非常实用的设备,在工业生产中起到了重要的作用。
通过本次实验,我们对其工作原理有了更深入的了解,并学会了正确使用方法。
希望今后能够通过实际应用,将数控分频器的优势发挥到极致,为工业生产的发展做出贡献。
数控分频器的VHDL设计
广州大学学生实验报告实验室:电子信息楼 317EDA 2017 年 11 月 1 日学院机电学院年级、专业、班电信151姓名苏伟强学号1507400051实验课程名称可编程逻辑器件及硬件描述语言实验成绩实验项目名称实验6 数控分频器的VHDL设计指导老师秦剑一实验目的a)学习数控分频器的设计、分析和测试方法;二实验原理a)数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比. 三实验设备a)EDA实验箱,示波器四实验内容和结果a)分析程序各语句功能,设计原理,逻辑功能,并详述P_REG,和P_DIV的功能。
程序如图1 设计原理:本程序设计的主要思路是,设计一个单向计数器,从预置数D(起点)开始计数,计数到设定的最大值(0XFF),输出信号POUT取反,与此同时,计数器回归到预置数起点D继续计数,继续计数到最大值后,POUT再次取反,如此往复,产生了一个原始时钟信号的分频信号POUT,频率为)(HzDXFFff clk-=P_SEG的功能:P_SEG部分负责从计数起点D,在每一次时钟的上升沿往上计数,并且在计数到OXFF的时候产生一个信号FULL=1,传递到P_DIV进行动作处理。
P_DIV的功能:P_DIV的触发信号是FULL=0到FULL=1的上升沿跳变,意思就是说,当计数到TOP值的时候,P_DIV会产生动作,具体的动作是将电平CNT2取反,然后赋值给输出FOUT,使得输出也取反.可以看到随着计数不断从起点计数到满值,在满值的时候对输出电平进行取反,可以得到一个占空比为50%的方波信号,该信号的频率是)(HzDXFFff clk-=b)如图2是程序的仿真波形图图2可以看到随着计数起点D的升高,计数到最大值OXFF所需要的时间更短了,也就是说电平取反的周期更短了,得到的输出信号的频率必然升高,同时也符合)(HzDXFFff clk-=的变换规律.c)目标器件为EP3C40Q240,电路选择模式1,键2/键1(PIO7—PIO0)负责输入8位预置数D,CLK接clock0,FOUT接扬声器,通过查找芯片引脚手册,找到对应的PIN脚,并且设置assignment editor 引脚映射,如图3所示:图3d)下载程序到开发板,可以看到,随着输入的D越来越大,蜂鸣器的声音越来越尖锐,说明输出信号的频率越来越高,接示波器,这里改变高四位(从0—F),低四位不变,观察示波器波形以及频率如图所示:e)思考题:设计一个正负脉冲宽度可控的分频器,输出正负脉冲宽度由两个8位输入控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验八数控分频器的设计
1、实验目的
1 学习数控分频器的设计;
2 熟悉VHDL常用语句的意义和使用;
3 练习引脚分配和时序分析。
2、实验内容
1 设计8位数控分频器;
三、实验原理
对于一个N分频器,分频出的时钟周期原时钟周期的N倍,频率是原时钟频率的1/N。
对于一个8位计数器,如果开始预置一个数D,然后启动计数器工作,则经过11111111-D个时钟周期计数器的值又变为11111111,当计数器为该数值时,下一个时钟沿到来之时,又将计数器预置为D,然后开始正常计数。
如此通过计数、预置的周期性操作,可以得到一个周期信号(即分频信号),其周期为11111111-D+1,即分频比为R= 11111111-D+1。
所以改变D,则可以控制分频比。
数控分频器的VHDL代码见教材P146-147。
仿真波形如图8-1所示。
图8-1 数控分频器仿真波形
图8-2 数控分频器芯片引脚分配
三、实验步骤
(一)8位数控分频器的设计
1 建立一个设计工程,工程名为PULSE;
2 打开文本编辑器,建立一个VHDL设计文件,其VHDL代码见教材
P166例6-22,文件名存为PULSE.VHD。
注意文件的扩展名要选
为.vhd,而且要求工程名、文件名和设计实体名必须相同。
3 选器件:将器件型号选为;
4 编译;
5 建立波形文件,然后保存,其文件名必须与工程名一致;【波形
设置:①设置仿真时间为500us:②设置输入信号的波形:时钟周期设置为50ns,其他输入信号的波形设置参看图8-1。
】
6 仿真,观察输出波形是否正确【参看图8-1中的输出波形】。
7 引脚分配;【将引脚分配到如图8-2所示的位置,然后再编译。
编译通过才算成功】
8 时序分析:分析芯片所能达到的最高时钟频率。
【打开时序分析器,然后执行菜单命令:analysis/register performance /start】
五、思考题
1 按本实验所示的方法进行分频,输出的分频信号FULL和FOUT是奇数分频还是偶数分频?分别说明之。
2 将本实验的8位数控分频器扩展为16位分频器;
3 在本实验的设计基础上,如果设置2个预置数D和D1,则可以控制输出信号FULL的占空比,使时钟信号变得比较均匀。
试在原来的VHDL 代码基础上进行改进,使用D和D1来控制FULL信号的占空比。
4 设计一个5分频器,使其分频时钟的占空比位3/5,写出VHDL设计代码。
【提示:对于一个5分频器的设计,可以先设计一个4位5进制计数器,则计数器的值在0,1,2,3,4上周期性循环。
设计方法是:当计数器为4时,如果下一个时钟沿到来则将计数器置0,然后开始正常计数。
另外定义一个分频信号CLK_DIV5,当计数器值为0,1,2时,使CLK_DIV5=1,当计数器值为3,4时,使CLK_DIV5=0,则CLK_DIV5为5分频信号,其占空比为3/5。
】。