系统时钟为50MHz,用VHDL语言怎样将其分频至1KHz呢?
飞思卡尔K60时钟的源时钟源一共有4个:
①内部参考时钟源,包括 Fast IRC和 slow IRC (IRC--Internal Reference Clock)
②外部参考时钟源,只一个EXTAL管脚作为时钟输入,这个可以使用有源晶体振荡器来实现
③外部晶体谐振器,使用EXTAL和XTAL两个管脚来输入
④外部32K RTC 谐振器,用于实时时钟的时钟输入
在图中可以看到,要为系统提供时钟信号,关键是要最终生成 MCGOUTCLK 输出。MCGOUTCLK 再经过分频便可以提供Core/system clocks、Bus clock、FlexBus clock和Flash clock。MCGOUTCLK 的产生有3个途径:
①由内部参考时钟源 Fast IRC 直接提供,这个时钟源集成在芯片的内部(包括Slow IRC),频率是2M
②由 FLL 或者 PLL 模块来提供
③由外部时钟来直接提供,包括外部参考时钟源(1个管脚输入)、外部晶体谐振器经内部OSC logic产生的XTAL_CLK 和 RTC OSC logic 的时钟输出。
一般情况下,MCGOUTCLK 是由PLL或者FLL倍频来产生的,飞思卡尔官方的例程最终是由PLL模块来产生。图中可以看到PLL模块的时钟输入是OSCCLK或者RTC OSC logic。我的板子以外部参考时钟源提供PLL时钟,最终经PLL倍频产生MCGOUTCLK。即 EXTAL-->PLL模块-->MCGOUTCLK.
sysClkRateSet()设置系统调动时间片,初始是60,即每秒钟调用60次;如果你设成1000,那就是每个tick间隔是1ms。
FileName:fq_divider.vhd----该模块为分频器,将1KHZ的时钟频率分频成每分钟一次的时钟频率
----事实上,该源码可以实现任意整数的分频,主要让N的值设置好相应的数字
---------------------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY fq_divider IS
generic(n:integer:=60000);
PORT(
CLK,reset: IN STD_LOGIC;
CLK_OUT:buffer STD_LOGIC
);
END;
ARCHITECTURE A OF fq_divider IS
SIGNAL CNT1,CNT2:integer:=0;
SIGNAL OUTTEMP:STD_LOGIC;
SIGNAL LOUT:STD_LOGIC;
SIGNAL OUT3:STD_LOGIC:='0';
BEGIN
P1:PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='1' THEN
IF CNT1=n-1 THEN
CNT1<=0;
ELSE
CNT1<=CNT1+1;
END IF;
END IF;
END PROCESS P1;
P2:PROCESS(CLK)
BEGIN
IF CLK'EVENT AND CLK='0' THEN
IF CNT2=n-1 THEN
CNT2<=0;
ELSE
CNT2<=CNT2+1;
END IF;
END IF;
END PROCESS P2;
P3:PROCESS(CNT1,CNT2 )
BEGIN
if ((n mod 2)=1) then
IF CNT1=1 THEN
IF CNT2=0 THEN
OUTTEMP<='1';
ELSE
OUTTEMP<='0';
END IF;
ELSIF CNT1=(n+1)/2 THEN
IF CNT2=(n+1)/2 THEN
OUTTEMP<='1';
ELSE OUTTEMP<='0';
END IF;
ELSE
OUTTEMP<='0';
END IF;
else
if cnt1=1 then
outtemp<='1';
elsif (cnt1=(n/2+1)) then
outtemp<='1';
else
outtemp<='0';
end if;
end if;
END PROCESS P3;
P4:PROCESS(OUTTEMP,clk,reset)
BEGIN
if reset='0' then
clk_out<=clk;
elsif ((n/=2) and (n/=1)) then
IF OUTTEMP'EVENT AND OUTTEMP='1' THEN
CLK_OUT<=NOT CLK_OUT;
END IF;
elsif (n=2) then
if(clk'event and clk='1')then
clk_out<=not clk_out;
end if;
else
clk_out<=clk;
end if;
END PROCESS P4;
END A;
直接分频就可以了,分频数:500M/1K
写个计数器就行了。要分多少就写多少的计数器
电脑里的主频到底代表什么?
因为100MHz的时钟周期比50MHz的时钟周期占用时间减少了一半,也就是工作在100MHz主频的CPU执行一条运算指令所需时间仅为10ns比工作在50MHz主频时的20ns缩短了一半,自然运算速度也就快了一倍。只不过电脑的整体运行速度不仅取决于CPU运算速度,还与其它各分系统的运行情况有关,只有在提高主频的同时,各...
FPGA 产生50MHz的时钟频率 在运行时出错了
你好!initial语句主要用于仿真测试,也就是在modelsim中写所谓的testbench文件用,是不可进行逻辑综合的语句,你肯定是直接在quartus里边综合了,所以出错了哦。请采纳!!
电脑CPU的主频是什么?主频越高速度越快吗?
1、CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。通常所说的某某CPU是多少兆赫的,而这个多少兆赫就是CPU的主频。2、主频速度越高速度并不一定越快。在某种情况下,很可能会出现主频较低的CPU的实际运算速度比主频较高的CPU运算速度要来得快的现象。因此主频高低仅仅是CPU性能表现的一个方面...
电路的工作频率为f=50MHz是啥意思啊?
电路的主频率是f=50兆赫兹,这个可以用高频电子电路分析。例如:模拟放大电路能正常工作的频率范围 开关电源电路的开关频率 A\/D转换器或D\/A转换器的电路每秒钟转换次数 以微电脑器件为主芯片的电路的时钟频率 一些由逻辑器件组成的电路的时钟频率 对于放大及驱动电路,由输入信号的频率决定;对于信号发生...
FPGA的50Mhz分频为65536hz?
如果您想要完整的代码,我建议您参考verilog或vhdl的文档,并查找相关的例子代码。选择使用verilog或vhdl取决于您的喜好。如果您不熟悉这两种语言,您可能需要学习一些基础知识,才能编写除频器的代码。根据我的知识,FPGA(可编程逻辑阵列)可以通过分频来降低时钟频率,但我不确定您是否问的是50 MHz的时钟...
系统时钟是40MHZ,进行n分频后的频率是多少,计算公式是什么?
50MHz\/65536=762.9Hz,这是我计算的结果,而65536等于2的16次方,即64K,所以分频的意思是64K分频,不是64分频,或者16位分频。
时钟频率的来龙去脉
譬如时钟频率为1GHz时,其时钟周期为1纳秒(表2)。表2:频率与周期对照表时钟频率 时钟周期 时钟频率 时钟周期5MHz 200ns 133MHz 7.5ns10MHz 100ns 166MHz 6.0ns20MHz 50ns 200MHz 5.0ns25MHz 40ns 250MHz 4.0ns33MHz 30ns 300MHz 3.3ns40MHz 25ns 333MHz 3.0ns50MHz 20ns 400MHz 2.5ns66MHz 15ns ...
计算机CPU的主频代表的是什么意思?
CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。通常所说的某某CPU是多少兆赫的,而这个多少兆赫就是“CPU的主频”。很多人认为CPU的主频就是其运行速度,其实不然.CPU的主频表示在CPU内数字脉冲信号震荡的速度,与CPU实际的运算能力并没有直接关系情况。在电子技术中,脉冲信号是一个按一定...
求教电脑个部件频率的搭配问题
cpu的主频就是cpu在一个时钟周期内发射脉冲信号的频率,单位为赫兹(Hz),主频是一个处理器的核心频率,外频就是处理器的外部频率,主频和外频之间所形成的倍数就是倍频,在较早的一段时期内处理器的外频和其总线被人们混为一谈,为了适应处理器主频率和内存频率之间发展速度的差距从奔腾4开始,英特尔在...
spi信号25m时钟的上升时间是多少
频率:频率是指电流周期的波形在某个单位时间内重复的次数(通常是1s),单位通常为赫兹(Hz)。如我国的市电一般为50Hz,即电流在1秒钟重复了50次,如在板级比较常用的SPI协议,50MHz的话则表示它的时钟能在1秒钟重复5000万次(当然实际使用中由于每个指令周期之间会存在一定间隔,所以会小于这个数量)...
稻炊马根: library ieee; use ieee.std_logic_1164.all; entity div isgeneric(n:integer :=50);port (clk,reset_n:in std_logic;q:out std_logic); end div; architecture behave of div issignal count :integer range n-1 downto 0:=n-1; beginprocess(clk,reset_n)beginif ...
天津市15023695163: VHDL语言怎么写把50MHZ分频为10KHZ 而且10KHZ可以步进可调为10K - 100KHZ 谢谢 - ?
稻炊马根: library就不写了.主要是用prescaler.现在这个程序输出10kHz.如果你要100kHz,那么就把prescaler减少到500..基本上是用50MHz的时钟计算,然后prescaler加法运算的速度就是50MHz.但是只有到prescaler加到一定程度的时候才触发输出...
天津市15023695163: 怎样把50MHZ分频为100HZ和1KHZ的VHDL语言的程序设计? - ?
稻炊马根: 分频处理,写一个 5000分频计数器和一个十分频计数器,这种程序网上有,任意分频的代码 .
天津市15023695163: 用VHDL设计一个倒计时计数器,lcd实时显示秒表计时值,时钟信号50mHz,同步电路模式 - ?
稻炊马根: 初始计时25s 通过ta tb可以对倒计时进行设置0~99s qa qb输出到显示 后面接个译码器就可以显示 ldn是调节有效位 en为开始倒计时按键 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JSQ ...
天津市15023695163: 如何用VHDL将50MHz方波分频为70KHz - ?
稻炊马根: 用50Mhz的时钟来计数,计到357就把输出信号翻转,那么该输出信号就是70KHZ的信号了.
天津市15023695163: CPLD,晶振是50MHZ的,怎么能分频得出15M,求大神指点.最好是附上VHDL语言程序 - ?
稻炊马根: 有3种办法:1. 直接利用开发工具(Quartus II或者ISE)中的IP Core将50MHz的时钟信号分频至15MHz;2. 先利用开发工具(Quartus II或者ISE)中的IP Core将50MHz的时钟信号3倍频至150MHz,然后再将其10分频,就得到15MHz的时钟分支信号了;3. 采用锁相环技术设计非整数分频电路,参阅《FPGA/CPLD应用设计200例》(上册)p.354~357,北京航空航天大学出版社2009年出版.
天津市15023695163: 用VHDL语言设计一个电子系统,需要三种时钟,分别是:1000HZ、500Hz、50Hz,系统输入时钟为100KHz. - ?
稻炊马根: 你说的是一个分频器,分别为100分频、200分频、2000分频.library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity divider is port(clk:in std_logic; q1000,q500,q50:out std_logic);--q1000输出1000HZ,q500输出500Hz,q50...
天津市15023695163: 用VHDL语言实现分频,选择哪个时钟实现分频产生1HZ,23HZ,25HZ,28HZ,30HZ - ?
稻炊马根: 你试一下用与48.3kHz接近或者成整数倍关系的频率做主频,然后分频.
天津市15023695163: 用VHDL实现分频 - ?
稻炊马根: 1. 模n计数器的实现 一般设计中用到计数器时,我们可以调用lpm库中的计数器模块,也可以采用vhdl语言自己设计一个模n计数器.本设计采用vhdl语言设计一个最大模值为16的计数器.输入端口为:使能信号en,复位信号clr和时钟信号clk;输...
天津市15023695163: 用quartus2软件Verilog HDL语言怎么实现50Hz时钟脉冲信号 - ?
稻炊马根: SystemVerilog forever #10ms clock = ~clock; http://www.fpga.com.cn/HDL/systemverilog/1.htm