怎样把50MHZ分频为100HZ和1KHZ的VHDL语言的程序设计?
library就不写了。
主要是用prescaler。
现在这个程序输出10kHz。如果你要100kHz,那么就把prescaler减少到500.。
基本上是用50MHz的时钟计算,然后prescaler加法运算的速度就是50MHz。但是只有到prescaler加到一定程度的时候才触发输出信号。
下面的这段代码输出10kHzPWM信号,占空比50%。
我直接在这里写的,有错别怪我。。
entity something is
port
{
CLK_50M : in std_logic;
outputpin: out std_logic; --这个是你的输出针脚
};
end something;
-- 中间的 architechture我就不写了
process(CLK_50M)
signal prescaler : integer in range 0 to 5000 := 0;
begin
if (CLK_50M'event and CLK_50M = '1') -- trigger event on rising edge(不知道怎么翻译。。。)
if (prescaler > 4999)
prescaler <= 0;
else
if (prescaler < 2500)
outputpin <= '1'; --输出高电平
else
outputpin <= '0'; --输出端输出低电平
end if;
prescaler <= prescaler + 1
end if;
end if;
end process;
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div is
generic(n:integer :=50000000);
port (clk:in std_logic;
q:out std_logic);
end div;
architecture behave of div is
signal count :integer range n-1 downto 0:=n-1;
begin
process(clk)
begin
if (clk'event and clk='1' and clk'last_value ='0') then
count<=count-1;
if count>=n/2 then
q<='0';
else
q<='1';
end if;
if count<=0 then
count<=n-1;
end if;
end if;
end process;
end behave;
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;
分频处理,写一个 5000分频计数器和一个十分频计数器,这种程序网上有,任意分频的代码 。
使用Verilog HDL实现50MHz分频为20MHz
以下代码可以实现40%占空比的分频,供参考。\/\/clk_50m, clk_20m, rst \/\/cnt;reg [2:0] cnt;always@(posedge clk_50m)if(!rst)cnt <= 3'b0;else if (cnt >= 4'h4)cnt <= 3'b0;else cnt <= cnt + 1'b1;always@(posedge clk_50m)if(!rst)clk_20m <= 1'b0;else if ...
VHDL语言。。如何实现50MHz分频为两个25HZ?
做一个计数器,计数到2000000 - 1就清零,清零的同时将输出时钟取反就可以了 process (clk, rst)begin -- process if rst = '1' then clk_25hz <= '0';cnt <= 0;elsif clk'event and clk = '1' then -- rising clock edge if cnt \/= 2000000 - 1 then cnt <= cnt +...
如何用verilog将50MHz分频到50kHz?
module cutclk( input clk,reset,output reg clk_divide);reg [9:0] clk_cnt;always @(posedge clk or posedge reset)if(reset)begin clk_cnt <= 10'd0;clk_divide <= 0;end else if (clk_cnt == 10'd0)begin clk_cnt <= 10'd1;clk_divide <= ~ clk_divide;end else if (...
系统时钟为50MHz,用Verilog代码怎样将其分频至1\/100s?
rst)if ( !rst )begin count1 <= 0;clk_out<= 0;end else begin if (count1 < 20)begin count1 <= count1+1;if (count1>=10)clk_out <=1;else clk_out <=0;end else count1 <=0;end endmodule clk_out为输出引脚,rst复位,clk为输入,进行20次计数实现分频,占空比1:1 ...
求帮写VHDL,将50mhz分频6个频率,驱动蜂鸣器,产生6种不同声音
--一顿早饭的时间写的,综合仿真均已通过,放分吧~library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity MusicBox is port (clk:in std_logic;--主频 可设置成50M rst:in std_logic;--复位信号 低有效 selectin:in std_logic_...
如何将50Mhz进行8分频
用一块数字芯片分频一下,比如4017,4060,4024,4040,4020都可以。
帮帮忙,请问怎么样用VHDL设计一个分频器,信号是50MHz分成1Hz,谢谢...
可以利用加法器,每个上升沿+1,加到4999999输出反转一次就得到了
FPGA中分频问题。想把50MHZ分频到1HZ。应该怎么实现??请问DCM分频是怎么...
计数分频和dcm分频都可以实现,不过要看你的这个分频时钟到底是干什么用的。dcm是专门的数字时钟管理,它所实现的分频时钟更准确,与时钟源和其他的分频分钟有着严格的相位关系,时钟抖动等特性要好;计数分频则必然与原时钟有一定的相位偏移,尽量不要用计数分频的信号去做时钟触发,一般都会报warning,...
求用VHDL可以将50MHZ分别分成40MHZ,30MHZ,20MHZ,10MHZ分频器。
用PLL或DLL去配置时钟,软件都有自带现成的IP核。 PLL\/DLL即锁相环。
怎样把50MHZ分频为100HZ和1KHZ的VHDL语言的程序设计?
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;S...
除荆隆格: 分频处理,写一个 5000分频计数器和一个十分频计数器,这种程序网上有,任意分频的代码 .
石台县19126781918: 如何在verilog中生成一个10ms的时钟? - ?
除荆隆格: 其实就是编写一个分频程序吧,把你原有的时钟50MHz分频成100Hz.大概就是你要把50000000个方波分频成100个方波.那么比例就是50000:1了,一个时钟有高低两个电平,所以呢,原有时钟计数到25000个时,要发生高低电平转换了.程...
石台县19126781918: 50Mhz分频成10khz、1hz、100hz、500hz、1khz的仿真波形 - ?
除荆隆格: 有两种:(1)功率分频器,位于功率放大器后,在音箱中设置Lc滤波网络,将功率放大器输出的功率音 频信号分为低音、中音和高音,分别送至各自扬声器,这种方法被称为被动分频,连接简单,使用方便,但信号 损失较大.(2)电子分频器,将音频弱信号进行分频的设备,位于功率放大器前,分频后将低音、中音、高音信 号送至各自功率放大器,然后由功放分别送给低音、中音、高音扬声器,这种方法被称为主动分频,再现音质 较好,信号损失小,但需要一台分频器.
石台县19126781918: altera 公司的FPGA怎样把50M的时钟分频得到100HZ的时钟信号 请大侠们解疑答惑 - ?
除荆隆格: 可以使用PLL做分频,也可以自己写个分频计数器,50M/100
石台县19126781918: VHDL语言怎么写把50MHZ分频为10KHZ 而且10KHZ可以步进可调为10K - 100KHZ 谢谢 - ?
除荆隆格: library就不写了.主要是用prescaler.现在这个程序输出10kHz.如果你要100kHz,那么就把prescaler减少到500..基本上是用50MHz的时钟计算,然后prescaler加法运算的速度就是50MHz.但是只有到prescaler加到一定程度的时候才触发输出...
石台县19126781918: 变频器怎样设成100HZ ?
除荆隆格: 改变变频器频率的步骤如下:1、先进行变频器的空载试验:首先,检查变频器的所... 变频器怎样设成100HZ 一般变频器都可以工作在120-200HZ最高频率,如果设备可以...
石台县19126781918: 如何用verilog编写50MHZ分频到1KHZ和2HZ,mode - ?
除荆隆格: 一般采用计数分频的办法,如何计算分频的计数值 N : 如果是50Mhz分频1Khz,那么表达式为:1/50Mhz * N = 1/1KhzN = 50Mhz / 1Khz = 50000 如果是50Mhz分频2hz,那么表达式为:1/50Mhz * N = 1/2hzN = 50Mhz / 2hz = 250000001、...
石台县19126781918: 用VHDL语言帮忙设计一个分频器,从50MHZ信号分频出500Khz,100Khz信号 - ?
除荆隆格: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY Frequency IS PORT (CLK: IN STD_LOGIC; Q1: INOUT STD_LOGIC := '0'; Q5: INOUT STD_LOGIC := '0'); END Frequency; ARCHITECTURE one OF Frequency IS SIGNAL cnt_0:...
石台县19126781918: 系统时钟为50MHz,用Verilog代码怎样将其分频至1/100s? - ?
除荆隆格: module S20 (clk,rst,clk_out); input clk,rst; output clk_out; reg clk_out; reg [4:0] count1; always@( posedge clk or negedge rst) if ( !rst ) begin count1clk_outend else begin if (count1begin count1if (count1>=10) clk_outelse clk_outend else count1end endmodule clk_out为输出引脚,rst复位,clk为输入,进行20次计数实现分频,占空比1:1
石台县19126781918: verilog分频计数器怎么写 - ?
除荆隆格: reg [15:0] cnt; reg clk_100; always@(posedge clk_50M or negedge rst_n) beginif(!rst_n)begincnt <= 16'd0;clk_100 <= 1'b0;endelsebeginif(cnt == 16'd14999)clk_100 <= ~clk_100;elsecnt <= cnt + 1;end end这个就是 clk_50M (50Mhz)分频为 clk_100 (100hz)的例子, 计数翻转就行了.