VHDL 如何将1MHZ分频为1HZ
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity div is
generic(n:integer :=1000000);
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 rising_edge(clk) 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;
模N计数器的实现
一般设计中用到计数器时,我们可以调用lpm库中的计数器模块,也可以采用VHDL语言自己设计一个模N计数器。本设计采用VHDL语言设计一个最大模值为16的计数器。输入端口为:使能信号en,复位信号clr和时钟信号clk;输出端口为:qa、qb、qc、qd。其VHDL语言描述略。
带使能控制的异或门的实现
输入端为:xor_en:异或使能,a和b:异或输入;输出端为:c:异或输出。当xor_en为高电平时,c输出a和b的异或值。当xor_en为低电平时,c输出信号b。其VHDL语言略。
2分频(触发器)的实现
输入端为:时钟信号clk,输入信号d;输出端为:q:输出信号a,q1:输出信号a反。其VHDL语言略。
4.分频器的实现
本设计采用层次化的设计方法,首先设计实现分频器电路中各组成电路元件,然后通过元件例化的方法,调用各元件,实现整个分频器。其VHDL语言略。
library ieee;
use ieee.std_logic_1164.all;
entity fjyfp is
port(clk:in std_logic;
newclk: out std_logic);
end entity fjyfp;
architecture art of fjyfp is
signal cnter:integer range 0 to 10#49#;
begin
process(clk)is
begin
if clk'event and clk='1'then
if cnter=10#49#then
cnter<=0;
else
cnter<=cnter+1;
end if;
end if;
end process;
process(clk,cnter)is
begin
if clk'event and clk='1'then
if cnter=10#49#then
newclk<='1';
else
newclk<='0';
end if;
end if;
end process;
end architecture art;
这是50分频的程序, 你只要将49改成要 分频数减1 就行了
danwei
濮芳派君: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity div is generic(n:integer :=1000000); 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 ...
华莹市19665181327: 用VHDL编写一个利用1MHz基准频率分频产生1个高中低三种音名的音频信号 - ?
濮芳派君: 产生不同音名的音频信号要用到分频器,将频率在不同的周期内用不同的分频系数即可实现产生高中低三种音名.调节音量的话可以调节占空比,不同的占空比即得到不同的幅值,音量也会随之改变,以下是代码: --音频信号的分频器 library ...
华莹市19665181327: 用VHDL将1mhz分频成1hz,求编一下程序,谢谢! - ?
濮芳派君: 计数器 数1M下 输出电平翻转一次
华莹市19665181327: 利用Verilog HDL 将20Mhz分频得到1hz - ?
濮芳派君: 就是一个简单的计数分频,程序给你敲在下面了,计数count小于10000000时为低,大于10000000小于20000000时为高,计数等于20000000时清零重新开始,循环,这就把20M分成1Hz了,请采纳吧 module div(clk,o_clk); input clk; output o_clk; reg[31:0] count; always@(posedge clk)begin if(count==20000000) count<=0; else count<=count+1; endassign o_clk=(count<10000000)?0:1; endmodule
华莹市19665181327: 用VHDL语言描述一个分频器,将4MHZ分频成1HZ - ?
濮芳派君: signal clock:std_lgic;---------1HZ是时钟信号 signal n :integer range 0 to 50000 process(clk)-------------clk 4MHZ begin if(n=500000) then clock<= not clock; n<=0; else n<=n+1; end if ; end process;
华莹市19665181327: 求用VHDL设计一个分频器 - ?
濮芳派君: 是不是把48MHz分频为0.2Hz?如果这样,我给你个思路吧:1、分频器实质上就是一个计数器,48MHz分到0.2Hz实际上就是设计一个计数器,使得每次计录48*2.5*10^6个脉冲后将一个信号翻转(也就是2.5秒高电平,2.5秒低电平);2、具体...
华莹市19665181327: 用VHDL编写分频器程序 - ?
濮芳派君: 这个一般有两种方法,一种是分奇偶分频,因为奇偶分频不一样,所以先判断是奇偶,然后再相应处理就可以了,另一种是一种整体算法思想,不需要判断奇偶数...顶层模块程序:entity control_clk is port( Clk_i : in std_logic; Data_i : in std_...
华莹市19665181327: 跪求 VHDL 分频代码:将48MHz分出 2kHz 1kHz 1Hz - ?
濮芳派君: 程序第十二行: SIGNAL cnt_1Hz:INTEGER RANGE 0 TO 24000000; 数值范围过大,24000000太大,会占用很多的逻辑单元, 建议,1hz的信号,从1Khz中计数取得, 另外:你的程序别的地方都没有过错,很棒.
华莹市19665181327: 如何用1MHZ的晶振通过2分频得到1HZ的时钟信号 - ?
濮芳派君: 1MHZ两分频怎么能得到1HZ的信号呢?如果想得到1HZ的信号可以通过单片机接1MHZ的晶振工作内部计时输出1HZ的时钟,不过这样时间长了精度会受到影响.还可以通过隔离取样交流市电的50HZ频率信号,计数25次后输出信号翻转一次,这样得到的1HZ信号比较准.
华莹市19665181327: 用VHDL语言描述一个倍频器,将1HZ分频成1MHZ,拜托高手帮忙! - ?
濮芳派君: 那是不可能的.一般来说FPGA内部有锁相环能进行倍频,但最多也就倍个几十或者几百倍.不能倍一百万倍. 只有专业的锁相环芯片级联才能做到倍一百万倍.