数控分频器的设计概要
实验五 数控分频器的设计
实验五数控分频器的设计一、设计目的1、学习数控分频器的设计、分析、测试方法;2、牢固掌握用VHDL语言编写程序的方法和技巧。
二、设计要求1、编写数控分频器的VHDL源程序;2、在MAX+PLUSII上进行编译、综合、适配、引脚锁定、下载测试;3、输入不同的CLK和预置值进行仿真波形的测试;4、写出设计性实验报告。
三、设计提示1、实验原理提示:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,可用计数值可并行预置的加法计数器设计完成,方法是将计数溢出位与预置数加载输入信号相接即可。
2、引脚锁定及下载测试提示:如果目标器件是EPF10K10,建议选实验电路模式1,键2 / 键1(PIO7-PIO0)负责输入8位预置数D;CLK由clock0输入,频率可选65536Hz或更高(确保分频后落在音频范围);输出FOUT接扬声器(SPKER:PIN3)。
编译下载后进行硬件测试:改变键2 / 键1的输入值,可听到不同音调的声音。
四、实验报告要求根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;设计原程序,程序分析报告、仿真波形图及其项目分析。
五、实验思考和总结1、阐述程序设计中进程的作用。
2、对所完成的实验进行总结和分析。
3、写出完成时钟上升沿的语句。
4、5、程序清单:附:数控分频器的设计程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PULSE ISPORT ( CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC );END;ARCHITECTURE one OF PULSE 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; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8 FULL <= '1'; --同时使溢出标志信号FULL输出为高电平ELSE CNT8 := CNT8 + 1; --否则继续作加1计数FULL <= '0'; --且输出溢出标志信号FULL为低电平END IF;END IF;END PROCESS P_REG ;P_DIV: PROCESS(FULL)VARIABLE CNT2 : STD_LOGIC;BEGINIF FULL'EVENT AND FULL = '1'THEN CNT2 := NOT CNT2;--如果溢出标志信号FULL为高电平,D触发器输出取反IF CNT2 = '1' THEN FOUT <= '1';ELSE FOUT <= '0';END IF;END IF;END PROCESS P_DIV ; END;。
实验三 数控分频器设计
实验三数控分频器设计【实验目的】1.设计实现一个根据不同的输入,将时钟信号进行分频2.掌握分频计数器类型模块的Verilog描述方法;3.学习设计仿真工具的使用方法;4.学习层次化设计方法;【实验内容】1.用Verilog 语言设计带计数允许和复位输入的数控分频器。
2. 编制仿真测试文件,并进行功能仿真。
3. 下载并验证分频器功能【实验原理】数控分频器的功能是在输入端给定不同数据时,将对输入的时钟信号有不同的分频比,对于一个N分频器,分频出的时钟周期是原时钟周期的N倍,频率变为原来的1/N。
对于一个8位计数器,如果输入数D,然后启动计数器工作,则经过D倍的时钟周期,计数器溢出时,输出pfull变为高电平,再以pfull为敏感信号,对fout进行取反操作,如此N=2D。
计数一次后,再重新计数,反复进行直至输入被赋予新值。
对于数控分频数器,装载不同的计数初始值时,会有不同频率的溢出信号,从而得到不同的输出。
数控分频器是利用计数值可并行预置的加法计数器设计完成的。
【程序源代码】(加注释)module FDIV(clk,fdiv,fout,pfull); //8位二进制的数控分频计input clk; //时钟信号input [7:0] fdiv; //8位加载数据output pfull; //定义一个1位的寄存器型中间控制变量output fout; //分频数据输出reg [7:0] Q; reg fout,full,pfull;always @(posedge clk) begin //clk有上升沿时,启动以下程序if(Q==fdiv) begin Q=0;full=1;end //若Q==fdiv,Q=0,full=1else begin Q=Q+1;full=0;end //若Q!=fdiv,Q累加1,full=0pfull=full;end //将full数据向pfull输出always @(posedge pfull)fout=~fout; //当pfull有上升沿时,对fout取反endmodule【RLT电路】【仿真和测试结果】功能分析:当输入fdiv为预置数“5”时,经过5倍的clk周期,pfull由低电平变为高电平;当pfull有上升沿时,对fout取反fout,因此fout的周期是clk的10倍,即完成对clk的10分频功能。
数控分频器实验报告
《数控分频实验》姓名:谭国榕班级: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.。
基于CPLD的数控分频器设计
基于CPLD的数控分频器设计本文档介绍了基于复杂可编程逻辑器件(CPLD)的数控分频器设计。
数控分频器是一种用于生成可调节频率输出信号的电路,常用于数字信号处理、通信系统等领域。
引言数控分频器是一种重要的电子器件,用于产生可调节频率的输出信号。
传统的分频器通常采用模拟电路实现,但其频率调节范围有限,且调节不灵活。
而基于CPLD的数控分频器可以通过灵活的编程方式实现频率的精确调节,具有较大的优势。
设计方案系统框图![系统框图](系统框图.png)设计方案基于CPLD芯片,可以实现输入信号的分频功能。
主要包括以下部分:1. 输入接口:用于接收输入信号,通常为时钟信号或频率信号。
2. 数据选择器:根据输入的选择信号,选择要实现的分频倍数。
3. 计数器:根据选择的分频倍数,对输入信号进行计数,生成分频后的输出信号。
4. 输出接口:将分频后的输出信号输出给外部设备或电路。
设计步骤1. 确定需要实现的分频范围和分辨率。
2. 根据分频范围和分辨率,选择合适的CPLD芯片,参考其技术手册了解其使用方法和特性。
3. 根据系统框图,设计电路连接和信号调节方式。
4. 编写CPLD的逻辑设计代码,实现输入信号的分频功能。
6. 根据实际需求进行调试和优化,确保分频器的性能和稳定性。
7. 完成设计文档和测试报告。
总结基于CPLD的数控分频器设计具有灵活性和可调节性的优势,可以满足不同应用场景的需求。
通过合理的设计和调试,可以实现稳定可靠的分频功能。
本文档介绍了设计方案和步骤,并提供了系统框图和相应的设计示例。
请注意,本文档仅为设计参考,实际设计过程中应考虑具体系统需求和CPLD芯片的特性。
分频器
数控分频器设计一、实验目的1 设计实现一个根据不同的输入 将时钟信号进行分频2 学习设计仿真工具的使用方法二、硬件要求主芯片Altera EPM7128SLC84-15,时钟信号,一位拨码开关。
三、实验原理数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。
该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数(初始计数值)设定不同的值,计数器以此预置数为初始状态进行不同模值的计数,当计数器的状态全为1时,计数器输出溢出信号。
用计数器的溢出信号作为输出信号或输出信号的控制值,使输出信号的频率受控于输入的预置数。
四、实验源程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity dvf is port(clk:in std_logic;d:in std_logic_vector(3 downto 0);fout:out std_logic);end;architecture bhv of dvf issignal full:std_logic;beginp_reg:process(clk)variable cnt8:std_logic_vector(3 downto 0);beginif clk'event and clk='1' thenif cnt8="1111"then cnt8:=d;full<='1';else cnt8:=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'then cnt2:=not cnt2;if cnt2='1'then fout<='1';else fout<='0';end if;end if;end process p_div; end;七、波形仿真结果。
实验四 数控分频器的设计
实验四、数控分频器的设计
(1)实验目的:学习数控分频器的设计、分析和Modelsim仿真方法。
(2)实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,参考代码中的数控分频器是用可并行预置的加法计数器设计完成的,当加法计数器溢出时进行并行预置。
(3)实验内容1:分析参考代码中的各语句功能、设计原理、逻辑功能,根据图1的波形提示,编写相应的Testbench文件代码,并用Modelsim进行仿真(仿真可以跳过时钟分频到100hz进程)。
(4)实验内容2:在此基础上进行硬件验证。
实验方法为:将clk接20Mhz 时钟信号,rst_n接核心板开关S1,fout接发光二极管SD0,预置值d从DKA0-DKA7输入,改变d的输入,从发光二极管SD0判断输出信号的频率。
(5)实验附加内容:将参考代码扩展成16位分频器,并提出此项设计的实用示例,如PWM的设计等。
(6)思考题:怎样利用2个参考代码中给出的模块设计一个电路,使其输出方波的正负脉宽的宽度分别由两个8位输入数据控制?
(7)附加题:从实验中你可以得到设计硬件电子琴的方法吗?
图1 当给出不同输入值d时,fout输出不同频率(clk周期=50ns)
参考代码。
数控分频器设计
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)波形分析由波形图可以知道实验成功。
实验6 数控分频器的设计
实验6 数控分频器的设计(1)实验目的:学习数控分频器的设计、分析和测试方法。
(2)实验原理:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,数控分频器就是用数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可,详细设计程序如例6-20所示。
【例6-20】8位数控分频器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT(CLK : IN STD_LOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC);END ENTITY DVF;ARCHITECTURE one OF DVF 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; --当CNT8计数计满时,输入数据D被同步预置给计数器CNT8FULL <= '1'; --同时使溢出标志信号FULL输出为高电平ELSE CNT8 := CNT8 + 1; --否则继续作加1计数FULL <= '0'; --且输出溢出标志信号FULL为低电平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;--如果溢出标志信号FULL为高电平,D触发器输出取反IF CNT2 = '1' THEN FOUT <= '1';ELSE FOUT <= '0';END IF;END IF;END PROCESS P_DIV;END ARCHITECTURE one;(3)分析:根据图6-21的波形提示,分析例6-20中的各语句功能、设计原理及逻辑功能,详述进程P_REG和P_DIV的作用,并画出该程序的RTL电路图。
实验六数控分频器的设计
可编程逻辑设计——实验六报告学院:物理与信息工程学院专业:通信工程年级:2007级班级:二班学号:110700221姓名:林明明指导老师:杨秀芝实验六数控分频器的设计一、实验目的:学习数控分频器的设计和测试方法。
二、实验原理:数控分频器的功能为在不同输入信号时,对时钟信号进行不同的分频,在输出端输出不同频率的信号。
该电路可以用具有并行预置功能的加法计数器实现,方法是对应不同的输入信号,预置数(初始计数值)设定不同的值,计数器以此预置数为初始状态进行不同模值的计数,当计数器的状态全为1时,计数器输出溢出信号。
用计数器的溢出信号作为输出信号或输出信号的控制值,使输出信号的频率受控于输入的预置数。
电路输出波形图:三、实验内容:1)根据实验原理画出电路框图,并计算在不同预置数时输出信号的频率与时钟频率的比值。
2)编写实现数控分频器的VHDL程序。
要求输出信号的占空比尽量为50%。
提示:可以将计数器溢出信号输出给一个翻转触发器,溢出信号的边沿作为触发器的触发信号,触发器的输出就是分频器的输出(注意计数器初始计数值与输出频率之间的关系)。
3)用QuartusII对设计进行编译、综合、仿真,给出仿真波形和时序分析数据。
4)通过QuartusII集成环境,将设计下载到实验电路上进行硬件测试。
输入不同的clk信号和不同的输入控制信号,测试输出波形。
管脚锁定:clk clk1 43D(3) PIO23 30 SW1D(2) PIO24 35 SW2D(1) Pio25 36 SW3D(0) PIO26 37 SW4Fout PIO19 29 LED12四、思考题:如果需要进行奇数分频(如3分频),能否够保持输出波形的占空比为50%?如果不能,如何使占空比尽量接近50%;如果可以,应如何做?五、实验结果:数控分频器的原理框图:数控分频器输出频率与输入时钟的关系:答:数控分频器输出频率与输入时钟频率成正比。
对于相同的计数器初始计数值,如果时钟频率变大(或缩小)为原来的n倍,那么数控分频器输出频率也将变大(或缩小)为原来的n倍。
实验五数控分频器的设计
IF CNT2='1' THEN FOUT<='1';
ELSE FOUT<='0';
END IF;
END IF;
END PROCESS P_DIV;
END;
课后预习
下次实验做实验指导书上的实验7(P57) 设计程序可参考EDA实验教材P196-198中的内容
表1 简谱中音名与频率的关系
2、实验内容及步骤
(参照实验教材P53 实验 3 中的内容) 设计程序可参考EDA实验教材P191-192中 的内容
实验报告要求
写出实验目的、设计要求、设计源程 序,波形仿真,并详述硬件实验过程和实验 结果。
提示:
建议选实验电路模式5,输出FOUT 接扬 声 器 ( SPKER : PIN 3 ) , 时 钟 CLK 接 clock0(引脚号为2),用短路帽选65536Hz信号, 键1~键8负责输入预置数D。
P_DIV:PROCESS(FULL)—由于P_REG进程数控 分频输出的FULL是脉宽极窄的脉冲波,为便于 驱动扬声器, P_DIV进程为一个二分频计数器, 使到达扬声器的波形为对称方波。
VARIABLE CNT2:STD_LOGIC;
BEGIN
IF FULL'EVENT AND FULL='1'
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY PULSE IS PORT(CLK:IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); FOUT:OUT STD_LOGIC); END; ARCHITECTURE ONE OF PULSE IS SIGNAL FULL:STD_LOGIC; BEGIN
数控分频器实验报告
数控分频器实验报告数控分频器实验报告引言:数控分频器是一种用于控制电机转速的设备,它可以根据输入的指令来调节电机的转速,广泛应用于工业生产中。
本实验旨在通过搭建数控分频器电路并进行实际操作,探究其原理和工作方式。
一、实验目的本实验的主要目的是了解数控分频器的基本原理,掌握其正确的使用方法,通过实际操作加深对其工作原理的理解。
二、实验原理数控分频器是通过将输入的脉冲信号进行分频来控制电机转速的。
其工作原理主要包括以下几个方面: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位输入控制。
实验4 数控分频器设计
分频器设计的基础——计数器
4位二进制加法计数器
计满全1后,产生进位信号cout,cout的频率是计数时钟 频率的16分之一,称cout是clk的十六分频。 如果有一个预置数d[3..0],从d开始计数计到全1,这时进 位信号cout与clk的频率关系是什么呢? 分频比R=“1111”-d[3..0]+1
• • • • • • •
p1:process(cout) begin if cout'event and cout='1' then --信号cout上升沿时,div2取反 div2<=not div2; --即div2是cout的二分频 end if; end process; end;
设计的关键点在于一个信号与0异或,得到的是信号本身;与1异或, 得到的是信号的取反。。
实验四 数控分频器的设计
1.实验目的 (1)学习时序电路VHDL语言设计。 (2)学习多进程设计,掌握变量的用法与信号 的区别。 (3)掌握整数数控分频器的原理及设计方法。 (4)掌握半整数数控分频器的原理及设计方法
2. 背景知识
分频器在时序逻辑电路中应用广泛.数控分频 器的功能就是当在输入端给定不同的输入数据时 ,将对输入的时钟信号有不同的分频比。 整数分频器采用计数初值可并行预置的加法 (或者减法)计数器构成。时钟源与所需频率不 成整数倍关系,需要采用小数分频器进行分频。
பைடு நூலகம்
library ieee; --设计库的打开和程序包的允许使用 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity pulse is --定义实体pulse port(clk : in std_logic; --初始时钟clk,即分频前时钟 d : in std_logic_vector(7 downto 0); --8位预置数d fout : out std_logic); --分频后输出信号 end; architecture one of pulse1 is --定义结构体 signal full : std_logic; --定义信号full begin p0:process(clk) --进程p0,以clk为敏感参数 variable cnt8 :std_logic_vector(7 downto 0); --定义内部变量cnt8 begin
数控分频器
数控分频器1.1法度榜样计数分频器 (2)1.1.1标题要求 (2)1.1.2 筹划论证 (2)1.2(实训题标题)波形产生器与计数器 (4)1.2.1标题要求 (4)1.2.2筹划论证 (4)二电子线路设计与实现 (6)2.1法度榜样计数分频器电路设计 (6)2.2波形产生器与计数器电路设计 (6)三成果与分析 (8)3.1法度榜样计数分频器的实现 (8)3.2.1波形产生与计数器的实现 (8)3.2.2 实际后果 (10)四总结与领会 (12)参考文献 (13)附录 (14)波形产生与计数器焊接PCB图 (15)一标题要求与筹划论证1.1法度榜样计数分频器1.1.1标题要求用差不多操纵的mulitisim的相干常识,在mulitisim的运行情形下设计并仿真一个法度榜样计数分频器的实验,应用74LS138以及两片74LS195构成模值为2-8的法度榜样计数分频器,要求实现的功能如下:表1 法度榜样计数分频器功能表1.1.2 筹划论证图1 体系整体模块图表3 74LS195D 功能表由功能表可知,74LS138的G2A 和G2B 输入端中只要有一个是高电平,不管G1和CBA 是高电平照样低电平,Y0~Y7输出的差不多上高电平,若G1输入低电平,Y0~Y7输出的也差不多上高电平,在G1、G2A 以及G2B 端输入的是H 、L 、L 时,输出端Y0~Y7受CBA 三个输入端操纵,同时Y 输出低电平有效,同时是呈阶梯状分布,如许可实现3线-8线译码器的功能,再经由过程该译码器适本地操纵芯片74LS195就可实现法度榜样计数分频器。
至于74LS195,当输入端MR 是低电日常平凡,不论P E 、J 、K 、n P 输入低电平照样高电平,输出端Q 0~ Q 3差不多上低电平,因此MR 端是高电平有效,同时当PE 输入是高电日常平凡,该芯片具有移位存放器的功能(看图1的时序图可知),然则当PE 端输入是低电日常平凡,不论JK 端输入什么电平,输出端n n P Q ,恰是因为该芯片有移位存放器的功能,再加上译码器,要实现分频器的功能就不成问题了,因此要实现分频器的关键在移位存放器上。
实验07数控分频器
实验七数控分频器一. 实验目的1. 学习数控分频器的设计、分析和测试方法;2. 了解蜂鸣器的发声原理二. 准备知识我们知道,分频器与计数器是基于同一原理的。
我们如果设计N进制的计数器,即其模为N,一般情况下,我们使用计数器都是从0计数到N-1,输出进位,然后复位或清零,以后一次循环。
其计数结果就是0~N-1,共N种变化,进位就是一个N次的分频器。
同样,计数结果从1~N,或从2~N+1……在最大计数值时输出进位,其进位同样也是N次分频,为了方便和其它考量,一般在这种设计时,都是把计数器的最大计数设为计数器计满时的最大值,即如果是8位的N进制计数器,计数范围为0xFF+1-N~0xFF,0xFF就是由计数器位数决定的最大计数值。
二者的区别在于:0~N-1计数方式是同一起点计数,0xFF+1-N~0xFF计数方式是同一终点计数。
在使用可变分频器的设计中,往往采用第二种方法,原因是其分频频率比较“干净”。
蜂鸣器从控制电路上分为有源和无源,有源蜂鸣器直接接上其额定电源(1.5~15V直流工作电压,和蜂鸣器本身有关),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,就可连续发声;而无源蜂鸣器则和电磁扬声器一样,需要接在音频输出电路中才能发声,即对蜂鸣器加的电压或通过的电流要是在300Hz~几KHz(听觉范围内)的方波信号,从能量的角度来说,这个方波信号最好是占空比为1:1的,这时其发声强度最大。
实验箱上的蜂鸣器是无源蜂鸣器,本实验使用按键控制分频器的输出频率,其进位输出结果接到蜂鸣器,在听觉范围内的频率,可以直观的分辨数控分频器的变化。
三. 实验步骤1、新建工程dvf新建工程文件夹shiyan7,在该文件夹中新建工程dvf。
2、新建原理图文件dvf编写模为可变参数、位宽为可变参数的通用计数分频器模块Int_Div,并封装。
(参考程序清单),要仔细看懂程序。
新建HDL数控分频器文件pluse,其进位输出经T触发器,送入蜂鸣器。
数控分频器的VHDL设计
实验六数控分频器的VHDL设计实验目的:学习数控分频器的设计、分析和测试方法。
实验项目分析设计:数控分频器的功能就是当在输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比。
其原理是用计数值可并行预置的加法计数器设计完成的,方法是将计数溢出位与预置数加载输入信号相接即可。
实验内容1:用VHDL语言设计一个8位数控分频器。
要求:在QuartusⅡ上进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。
引脚锁定以及硬件下载测试,选择目标器件EP1C3,建议选实验电路模式No.0。
用键1、键2作为置数数据D的输入端,CLK接clock0,FOUT接至扬声器Speaker。
(时序仿真时CLK周期设5ns~10ns,D分别设33H, FEH)所编写的源程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY DVF ISPORT( CLK : IN STD_lOGIC;D : IN STD_LOGIC_VECTOR(7 DOWNTO 0);FOUT : OUT STD_LOGIC);END ENTITY DVF;ARCHITECTURE ONE OF DVF 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';ELSE CNT8:=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' THEN FOUT<='1';ELSE FOUT<='0';END IF;END IF;END PROCESS P_DIV;END ARCHITECTURE ONE;仿真波形如下所示:经过硬件测试后,输入与输出满足题目要求和仿真结果。
数控分频器的设计PPT课件
编辑本段生产类型
生产类型通常分为三类。
1.单件生产 单个地生产某个零件,很少重复地生 产。
2.成批生产 成批地制造相同的
零件的生产。
3.大量生产 当产品的制造数量很大,大多数工作地 点经常 是重复 进行一 种零件 的某一 工序的 生产。
加强欧洲开发MEMS的力量,一些欧 洲公司 已组成 MEMS开发集 团。
目前已有大量的微型机械或微型系统被 研究出 来,例 如:
尖端直径为5μm的微型镊子可 以夹起 一个红 血球, 尺寸为7m m× 7mm× 2mm的微型 泵流量 可达250μl/min能开动 汽车, 在磁场 中飞
行的机器蝴蝶,以及集微型速度计、 微型陀 螺和信 号处理 系统为 一体的 微型惯 性组合( MIMU) 。德国 创造了 LIGA工艺, 制成了 悬臂
要技术领域与其他国家的竞争中走在 前面", 建议中 央财政 预支费 用为五 年5000万美元 ,得到 美国领 导机构 重视, 连续大 力投资
,并把航空航天、信息和MEMS作为 科技发 展的三 大重点 。美国 宇航局 投资1亿 美元着 手研制 "发现 号微型 卫星", 美国国 家科学 基
金会把MEMS作为一个新崛起的研究 领域制 定了资 助微型 电子机 械系统 的研究 的计划 ,从1998年开 始,资 助MIT ,加州 大学等8所大
床(Grinding Machine)、冲压机、压铸机机等专用机 械设备 制作零 件的过 程。 编辑本段微型机械加工技术的国外发 展现状
机械产品 1959年,Richard P Feynman(1965年诺贝尔 物理奖 获得者) 就提出 了微型 机械的 设想。 1962年 第一个 硅微型 压力传 感器问 世,其
理和方法组织生产和指导生产,将生 产过程 看成是 一个具 有输入 和输出 的生产 系统。 能使企 业的管 理科学 化,使 企业更 具应变 力
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验步骤
3、将设计项目设置成工程文件 将数控分频器设置为工程文件。 4、选择目标器件并编译 首先在Assign选项的下拉菜单中选择器件选择项Device, 此窗口的Device Family是器件序列栏, 应该首先在此拦中选定目标器件对应的序列名,为了选择 EPF1K30TC144-3器件,应将此栏下方标有 Show only Fastest Speed Grades的勾消去, 以便显示出所有速度级别的器件。完成器件选择后,按OK键。
实验步骤
最后启动编译器,首先选择左上角的MAX+plusII选 在其下拉菜单中选择编译器项Compiler (此编译器的功能包括网表文件提取、 设计文件排错、逻辑综合、逻辑分配、适配(结构综合) 时序仿真文件提取和编程下载文件装配等。) 点击Start,开始编译!如果发现有错,排除错误后再次编译。
EDA实验
【实验三】数控分频器的设计
实验目的
掌握MAX+plusII的文本设计流程。 通过实验掌握VHDL相关语句的正确使用 学习数控分频器的设计、分析和测试方法。
实验原理
数控分频器的功能就是当在输入端给定不同输入数据时, 将对输入的时钟 信号有不同的分频比,数控分频器就是用计数值可并行预置的 加法计数器
设计完成的,方法是将计数溢出位与立文件夹 2、输入设计项目和存盘 打开MAX+plusII, 选择菜单“File”“New…”,在出现的对话框,
在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式
在出现的“Untitled - Text Editor” 文本编辑窗口中键入数控分频器的 VHDL程序。
实验步骤
输入完毕后,选择菜单“FileSave”。首先在“Directories”目录框 中选择自己已建立好的存放本文件的目录,然后在“File Name” 框中键入文件名,按“OK”按钮,即把输入的文件放在目录中了 注意,原理图输入设计方法中,存盘的原理图文件名可以是任意 的,但VHDL程序文本存盘的文件名必须与文件的实体名一致)。 另应注意,文件的后缀将决定使用的语言形式,在MAX+plusII中 ,后缀为.VHD表示VHDL文件;后缀为.TDF表示AHDL文件 ; 后缀为.V表示Verilog文件。如果后缀正确,存盘后对应该语言的 文件中的主要关键词都会改变颜色。
实验步骤
5、时序仿真 接下来应该测试设计项目的正确性,即逻辑仿真, 具体步骤如下: (1)建立波形文件。 (2)输入信号节点。 (3)设置波形参量。 (4)设定仿真时间宽度。 (5)加上输入信号。 (6)波形文件存盘。
实验步骤
(7)运行仿真器。选择MAX+plusII项及其中的仿真器 Simulator选项 点击跳出的仿真器窗口中的Start键
实验步骤
7、编程下载 硬件实测此数控分频器的逻辑功能。
实验器材
计算机、GW48系列EDA实验开发系统各一台
预习要求
预习教科书相关内容 完成实验步骤 画出相关实验原理图
思考题
整理实验报告。 总结实验现象。
(注意,刚进入窗口时,应该将 最下方的滑标拖向最左侧,以便可观察到初始波形)。
(8)观察分析波形。对照数控分频器工作原理, 观察显示的时序波形是否正确的。
实验步骤
6、引脚锁定 如果以上的仿真测试正确无误,就应该将设计编程 下载进选定的目标器件中(EPF1K30TC144-3), 作进一步的硬件测试,以便最终了解设计项目的正确性。 这就必须根据评估板、开发电路系统或EDA实验板的 要求对设计项目输入输出引脚赋予确定的引脚, 以便能够对其进行实测。 在锁定引脚后必须再通过MAX+plusII的 Compiler选项,对文件从新进行编译一次, 以便将引脚信息编如入下载文件中。