实验六:数控分频器设计
基于VHDL数控分频器设计
目录一、设计任务与要求 (3)二、总体框图 (3)三、选择器件 (4)四、功能 (5)1、数控分频器 (5)2、BCD译码器 (6)3、扫描器 (11)4、3-8译码器 (13)5、7段数码管显示译码器 (16)五、总体设计电路图 (19)1总体(顶层)电路原理图 (19)2仿真结果 (19)3管脚分配图 (20)4.硬件连接情况 (20)六.心得体会 (20)数控分频器设计一、设计任务与要求数控分频器的功能就是当输入端给定不同输入数据时,将对输入的时钟信号有不同的分频比,以实现所需的输出频率。
基本功能:1、实现8位分频器,依据输入的8位2进制数的不同,有不同的分频比。
如输入10010000,即对输入的时钟信号进行144分频,如输入01001000,即对输入的时钟信号进行72 分频。
2、输出的波形应为占空比位50%的方波。
3、有显示功能,显示当前的分频比,即,输入的二进制数的大小。
总体框图设计思路:数控分频器用计数值可并行预置的加法器设计完成,当在输入端给定不同输入数据时将对输入的时钟信号有不同的分频比。
把输入端输入的八位二进制数直接通过BCD译码器转换为十位BCD码表示的十进制数,通过扫描器对3个数码管进行选通扫描,最后7段数码管显示译码器对选中数码管的赋值进行译码,并驱动数码管显示该数据。
模块的功能:1、数控分频器:实现8位分频器,依据输入的8位2进制数的不同,有不同的分频比。
如输入10010000,即对输入的时钟信号进行144分频。
2、BCD译码器:把输入端的8位2进制数转换成10位BCD码表示的十进制数。
3、扫描器:when “000”=>daout<=dout(3 downto 0);when “001”=>daout<=dout(7 downto 4);when “010”=>daout<=dout(3 downto 2)<="00";daout(1 downto 0)<=dout(9 downto 8);when others=>null;4、3-8译码器:当sel=0时,q=11111110;选择个位数码管亮。
数控分频器的设计概要
实验步骤
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文件。如果后缀正确,存盘后对应该语言的 文件中的主要关键词都会改变颜色。
数控分频器实验报告
《数控分频实验》姓名:谭国榕班级: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.掌握分频计数器类型模块的Verilog描述方法;3.学习设计仿真工具的使用方法;4.学习层次化设计方法;二.实验环境1.硬件环境:MagicSOPC实验箱,P4电脑;2.软件环境:QuartusⅡ软件一套。
三.实验内容1.用Verilog 语言设计带计数允许和复位输入的数控分频器。
2.编制仿真测试文件,并进行功能仿真。
3.下载并验证分频器功能四.实验原理分频就是根据输入的数字,对一段时钟周期进行分频,通过分频可以更清楚地看到输入与输出之间的关系,从而了解程序。
当用户设置好输入变量时,输出也就随之的改变。
五.实验步骤源程序:module dvf2(clk,d,fout,pfull);input clk;input[7:0]d;output fout,pfull;reg[7:0]cnt;reg pfull;reg fout;always @(posedge clk )beginif(cnt==d)begin cnt=8'd0;pfull =1;endelsebegin cnt=cnt+1;pfull=0;endendalways@(posedge pfull)fout=~fout;Endmodule1)RTL原理图2)仿真按管脚分配图分配管脚。
安装好实验箱驱动后点击图中start开始运行(图中没有安装驱动)。
六.实验心得体会本次实验初步了解了实验箱的构造,学会了实验箱与软件的连接方法,了解了软件下载到试验箱芯片上的基本流程,通过和老师的学习,同学的交流完成了本次实验。
实验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电路图。
数控分频器的设计实验报告
1 引言计算机组成原理与设计是计算机通信与技术专业本科生的必修课程。
在完成理论学习和必要的实验后,本科学生掌握了它的基本原理和各种基本功能的应用,但对硬件实际应用设计和其完整的用户程序设计还不清楚,实际动手能力不够,因此对该课程进行一次课程设计是有必要的。
计算机组成原理与设计的课程设计既要让学生巩固课本学到的理论,还要让学生学习硬件电路设计和用户程序设计,同时学习查阅资料、参考资料的方法。
计算机原理与设计的课程设计主要是通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。
1.1 设计的目的本次设计的目的就是了解并掌握VHDL硬件描述语言的设计方法和思想,通过学习的VHDL语言知识理论联系实际,掌握所学的课程知识,学习VHDL基本单元电路的综合设计应用。
通过学生独立设计方案并自己动手用计算机电路设计软件,编写和调试用户程序,来加深对该课程的认识和理解,充分发挥我们的个体创新能力。
通过课程设计深入理解VHDL语言的精髓,达到课程设计的目标。
1.2 需求分析这次课程设计的题目是实现基于CPLD的数控分频器及其应用。
设计乐曲程序能实现演奏电路,并用原理图方法设计数字时钟,使电路具有校时校分的功能与传统的纯硬件方法相比简单有效。
此设计可以适应多家可编程逻辑器件,便于组织大规模的系统设计;便于设计的复用继承和升级更新,具有广阔的应用前景。
1.3 设计的基本内容传统数字电路设计是利用标准集成电路、电路板来实现电路功能。
可编程逻辑器件和EDA技术使设计方法发生了质的变化。
把以前“电路设计+硬件搭试+调试焊接”转化为“功能设计+软件模拟+仿真下载”。
利用EDA开发平台,采用可编程逻辑器件CPLD/FPGA使硬件的功能可通过编程来实现,这种新的基于芯片的设计方法能够使设计者有更多机会充分发挥创造性思维,实现多种复杂数字逻辑系统的功能,将原来由电路板设计完成的工作放到芯片的设计中进行,减少了连线和体积,提高了集成度,降低了干扰,大大减轻了电路设计和PCB 设计的工作量和难度,增强了设计的灵活性,有效地提高了工作效率,MUSICFLOW增加了系统的可靠性和稳定性,提高了技术指标。
基于ASIC的数控分频器设计
基于ASIC的数控分频器设计
引言
本文提出了一种基于ASIC的数控分频器设计方案。
该方案利用ASIC技术,实现高速、低功耗、高可靠性、低成本的数控分频器,能够满足现代信号处理系统的需求。
设计原理
该方案采用高速数字信号处理器作为控制器,通过外部触发信号输入控制,控制器发送控制信号来控制数字电路分频器。
数字电路分频器使用高速逻辑单元实现高速低功耗的分频操作。
系统架构
该系统的架构图如下所示:
![系统架构图](system_architecture.png)
其中,数字信号处理器采用ASIC实现,高速逻辑单元采用FPGA实现,两者之间通过高速传输接口进行通信。
ASIC设计流程
ASIC设计流程如下:
1. 设计电路原理
2. 进行电路原理仿真
3. 设计电路布局
4. 进行电路布局仿真
5. 生成masks,并进行芯片制造
6. 进行芯片测试
FPGA设计流程
FPGA设计流程如下:
1. 设计逻辑原理
2. 进行逻辑原理仿真
3. 设计逻辑布局
4. 进行逻辑布局仿真
总结
本文提出的基于ASIC的数控分频器设计方案,采用高速数字信号处理器作为控制器,通过外部触发信号输入控制,控制器发送控制信号来控制数字电路分频器。
数字电路分频器使用高速逻辑单
元实现高速低功耗的分频操作。
该设计方案具有高速、低功耗、高可靠性、低成本等优点,能够满足现代信号处理系统的需求。
EDA实验指导(基于DE2-115)
EDA实验指导(基于DE2-115)信息科学与工程学院电子信息系徐雯娟编著EDA实验指导(基于DE2-115)实验一:一位全加器设计——原理图设计初步以下拟通过1位全加器的设汁,介绍原理图输入的基木设计方法。
软件基于quartus213.0版本。
1位全加器可以用两个半加器及一个或门连接而成,因此需要先完成半加器的设计。
下面将给出使用原理图输入的方法进行底层元件设计和层次化设计的主要步骤。
1.新建工程点击两次“next”后,如下图。
假设本项设计的文件夹取名为adder4,路径为:d:\ex\adder4(建议大家把所有的EDA实验都放在一个文件夹中,如ex,然后为每个实验在这个文件夹中新建一个文件夹,以实验名命名,如adder4)。
选择目标芯片:cycloneIVE系列的EP4CE11529C7,如图:直接next,之后到达完成界面,这里会看见关于整个工程的一些信息,核对一下是否正确,然后点击“finish”。
此时界面上会出现顶层文件名和项目名:2.新建原理图文件原理图编辑输入流程如下:(1)新建原理图文件。
打开QuartusII,选菜单“File”一“New”,在弹出的“New-”对话框中选择“Design Files”的原理图文件编辑输入项“Block block diagram/schematic File"按"OK"后将打开原理图编辑窗。
(2)在编辑窗中调入元件,完成半加器的原理图输入。
点击按纽“”或直接双击原理图空白处,从“Symbol”窗中选择需要的符号,或者直接在“name”文本框中键入元件名,如“and2”为2输入与门,点OK按钮,即将元件调入原理图编辑窗中。
例如为了设计半加器,分别调入元件and2,not,xnor和输入输出引脚input和output。
并如图用点击拖动的方法连接好电路。
然后分别在input和output的PIN NAME上双击使其变黑色,再用键盘分别输入各引脚名:a、b,co和s。
实验六数控分频器的设计
可编程逻辑设计——实验六报告学院:物理与信息工程学院专业:通信工程年级: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倍。
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,仿真结束。
数控分频器设计
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)波形分析由波形图可以知道实验成功。
数控分频器设计实验报告
实验目的与要求实验名称:数控分频器设计实验目的:将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位计数器形式,完成全部仿真测试和硬件测试内容。
实验四 数控分频器的设计
实验四、数控分频器的设计
(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)
参考代码。
(数控加工)数控分频器
(数控加工)数控分频器壹题目要求和方案论证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引脚接入的是高电平,实现不了计数功能。
数控分频器的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位输入控制。
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.调用以上两个符号文件连成以下电路图
三.实验仪器:电脑一台
实验箱一个
四.数据记录及处理:
数控分频器实验报告
数控分频器实验报告数控分频器实验报告引言:数控分频器是一种用于控制电机转速的设备,它可以根据输入的指令来调节电机的转速,广泛应用于工业生产中。
本实验旨在通过搭建数控分频器电路并进行实际操作,探究其原理和工作方式。
一、实验目的本实验的主要目的是了解数控分频器的基本原理,掌握其正确的使用方法,通过实际操作加深对其工作原理的理解。
二、实验原理数控分频器是通过将输入的脉冲信号进行分频来控制电机转速的。
其工作原理主要包括以下几个方面:1. 输入信号:数控分频器的输入信号一般为脉冲信号,其频率和占空比可以通过外部设备调节。
2. 分频电路:数控分频器内部的分频电路可以将输入信号进行分频,将高频的输入信号转换为低频的输出信号。
3. 控制电路:数控分频器的控制电路可以根据输入的指令来调节输出信号的频率和占空比,从而控制电机的转速。
三、实验步骤1. 搭建电路:根据实验指导书上的电路图,连接数控分频器和电机,确保电路连接正确。
2. 设置参数:根据实验要求,设置输入信号的频率和占空比,以及输出信号的频率和占空比。
3. 运行实验:按下启动按钮,观察电机的转速变化,并记录相关数据。
四、实验结果在实验过程中,我们通过调节输入信号的频率和占空比,以及输出信号的频率和占空比,成功控制了电机的转速。
通过实验数据的记录和分析,我们发现输入信号的频率越高,电机的转速越快;而输入信号的占空比则会影响电机的平均转速。
五、实验总结通过本次实验,我们深入了解了数控分频器的工作原理和使用方法。
数控分频器作为一种重要的工业控制设备,可以灵活地控制电机的转速,提高生产效率。
在实际应用中,我们需要根据具体的需求来设置输入信号和输出信号的参数,以达到最佳的控制效果。
总之,数控分频器是一种非常实用的设备,在工业生产中起到了重要的作用。
通过本次实验,我们对其工作原理有了更深入的了解,并学会了正确使用方法。
希望今后能够通过实际应用,将数控分频器的优势发挥到极致,为工业生产的发展做出贡献。
分频器设计报告
数控分频器设计报告一、设计目的学习数控分频器的设计、分析和测试方法。
以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分频电路封装设置成可调用的元件。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验六:数控分频器设计
一、实验目的
学习数控分频器的设计、分析和测试方法。
二、实验内容
1.在实验系统上硬件验证例5-1 的功能。
可选实验电路模式1:键2/键1 负责输入8位预置数D(PIO7-PIO0);CLK 由clock0 输入,频率选65536Hz 或更高(确保分频后落在音频范围);输出FOUT 接扬声器(SPKER)。
编译下载后进行硬件测试:改变键2/键1的输入值,可听到不同音调的声音。
2.将例5-1 扩展成16 位分频器,并提出此项设计的实用示例,如PWM 的设计等。
3.实验报告:根据以上的要求,将实验项目分析设计,仿真和测试写入实验报告。
三、实验程序
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( 7 DOWNTO 0 );
FOUT : OUT STD_LOGIC );
END;
ARCHITECTURE one OF DVF IS
SIGNAL FULL : STD_LOGIC;
BEGIN
P_REG: PROCESS ( CLK )
V ARIABLE CNT8 :STD_LOGIC_VECTOR(7 DOWNTO 0 );
BEGIN
IF CLK'EVENT AND CLK ='1' THEN
IF CNT8="11111111" THEN
CNT8 := D;
FULL<='1';
ELSE CNT8:=CNT8+1;
FULL<='0';
END IF;
END IF;
END PROCESS P_REG;
P_DIV: PROCESS( FULL )
V ARIABLE CNT2:STD_LOGIC;
BEGIN
IF 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;
四、实验仿真结果
五、心得
①在做实验之前要熟悉各个操作步骤,才能顺利,有效的完成实验。
②在实验之前要做好预习工作,以便更好的完成任务。
③遇到不懂的或者不会的,要及时解决。