如何用verilog将50MHz分频到50kHz?

作者&投稿:道楠 (若有异议请与网页底部的电邮联系)
如何用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 = 25000000

1、1Khz
reg [31:0] cnt;reg clk_1;always@(posedge clk_50M or negedge rst_n) begin if(!rst_n) begin cnt <= 32'd0; clk_1 <= 1'b0; end else begin if(cnt == 32'd50_000-1) // N - 1 clk_1 <= ~clk_1; // 因为是从0开始计数的 else cnt <= cnt + 1; endend
2、2hz
reg [31:0] cnt;reg clk_1;always@(posedge clk_50M or negedge rst_n) begin if(!rst_n) begin cnt <= 32'd0; clk_1 <= 1'b0; end else begin if(cnt == 32'd25_000_000-1) clk_1 <= ~clk_1; else cnt <= cnt + 1; endend

module Frequency(nrst,clk_in,clk_out);
input wire nrst;
input wire clk_in;
output reg clk_out;
reg [18:0]r_cnt;

always @(posedge clk_in)
if(nrst) begin
if(r_cnt < 19'd499999)
r_cnt <= r_cnt+1'b1;
else begin
r_cnt <= 19'b0;
clk_out <= ~clk_out;
end
end
else begin
r_cnt <= 19'b0;
clk_out <= 1'b0;
end
endmodule

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 (clk_cnt == 10'd500)
begin
clk_cnt <=10'd1;
clk_divide <= ~ clk_divide;
end
else clk_cnt <= clk_cnt + 10'd1;

endmodule


初学者请教Verilog.不同的module可以放在同一个.V文件里吗
1.分开放,这是verilog coding style的一种良好习惯,每个文件里面只包含一个独立的module 2.把所有这些文件放在同一个目录下,在top文件里实例化这些module就可以调用了 3.top文件和新建一个module一样的,不过模块里主要是定义连线和实例化子模块,你随便找本verilog的教程就有啦:)实例化是这样的,...

做数字IC设计,考研的话,集成电路工程,电子与通信工程,电路与系统,微电 ...
如果以做顶层设计为主的话,可以选集成电路工程或者电子与通信工程;如果以做底层设计为主的话,可以选微电子学与固体电子学或者集成电路工程。如果拿不准做何种设计,就选集成电路工程吧。只是有些学校的这个专业偏重顶层设计,而另一些学校偏重底层设计。

verilog中assign A=A是什么意思?
首先想问一下,你这个模块里面定义里面是否有个输出引脚叫Run_LED,如果是的,那么就好说了;assign Run_LED = Run_LED语句右边的Run_LED是wire型的寄存器,它与runmodule模块中的LED_Out连接,左边Run_LED是这个模块对应的输出,整个assign语句意思就是将LED_Out的值给模块的Run_LED输出。个人建议程序...

Error (10106): Verilog HDL Loop error at sorting4.v(13): loop m...
我在网上看了一下,你是参考的《基于Verilog HDL设计的多功能数字钟》这篇论文 你贴的这部分代码是modelsim调用的仿真测试文件,不是用来综合的。文献中“测试模块源代码如下:”这句话以上的代码是用来综合的。你先了解一下verilog的语法,以及quartus和modelsim的使用。然后看这篇论文你就明白了,才9月...

verilog中if else中能套if else吗,有啥错误啊,为什么??? case中能套i...
你说的这几种都是可以互相嵌套的 其中if else之间互相嵌套如果if和else不是一一配对的话需要用begin end来控制配对,如果配对不足则会报错。如果if后面没有else与其配对,则自动寄存 case之间的嵌套是根据endcase来进行判断一个case的结束的 你的程序出错的原因是if else的应该是配对问题,如果if 和...

计算机硬件描述语言(VHDL)与编程语言(C语言)的区别及关系,
软件编程语言和硬件描述语言的差别? verilog hdl 的程序烧到芯片里会影响芯片里的电路结构吧~ C编译成机器码以后一般都是在通用计算机上跑~这个问题很大有点不知道从何说起,老衲尽力了 VHDL硬件描述语言和汇编语言有什么关系吗? 做单片机方面,汇编语言是必学的,虽然单片机编程所用的大部分是C语言...

verilog中没有always的@如何理解?
--- (条件表达式) do_something;表示等待条件表达式满足,然后do_something,然后就往下走了。通常用在testbench中,不可综合。--- always @(a or b or c) begin do_something;end 表示不停地监测a、b、c,一旦它们任何一个发生变化,就立刻do_something,并且这个“监测”是始终存在的。这...

Verilog中常数28'hFFFF_FFF什么意思
第一个数字表示位数,28'就是有28位 h表示是十六进制数,b表示二进制,d表示十进制。因此,28'hFFFFFFF表示十六进制数,用二进制表示就是28个“1”,4’b10就是4为二进制0010;4'd10指十进制数10 Verilog HDL是一种硬件描述语言(HDL:Hardware Description Language),以文本形式来描述数字系统...

verilog HDL 三态双向驱动器;程序段见图
所谓的三态口,“双向”顾名思义,既可以做输入,又可以做输出的,定义为inout,其中en是使能判断,若为1,则表示为tri_inout作为输出端口,否则为输入端口 可以参考下8051单片机中相关内容的,P0-P3口中有许多都是双态口的,

请问verilog中:always @(posedge clk or negedge rst_n)和always @(p...
没有任何区别!一种意思的两种表示方法。

康定县17227188945: 如何用verilog编写50MHZ分频到1MHZ的代码.急~~ -
苗耿克淋: module hz(clk_50,clk_1);input clk_50; output clk_1;reg clk_1; reg [5:0] cnt;always@(posedge clk_50) begin if (cnt==6'd24) cnt <= 6'd0; else cnt <= cnt+1; endalways@(posedge clk_50) begin if (cnt==6'd0) clk_1 <= ~clk_1; endendmodule

康定县17227188945: 使用Verilog HDL实现50MHz分频为20MHz有完整程序 -
苗耿克淋: 加了端口定义,再试试.module clk_20m_div(clk_50m,clk_20m, rst); input clk_50m,rst; output reg clk_20m; reg [2:0] cnt; always@(posedge clk_50m)if(!rst)cnt <= 3'b0;else if (cnt >= 3'h4)cnt <= 3'b0;elsecnt <= cnt + 1'b1; always@(posedge ...

康定县17227188945: 用verilog HDL语言写一个分频器,将50MHZ分成1KHZ -
苗耿克淋: parameter N = 32'd25000000; reg [31:0]count; reg clk_1M; reg rst; always@(posedge clk_50M) beginif(rst == 1)beginclk_1M <= 0;cout <= 0;endelse if(count == N)clk_1M <= ~ clk_1M; end

康定县17227188945: 使用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;elsecnt <= cnt + 1'b1;always@(posedge clk_50m)if(!rst)clk_20m <= 1'b0;else if (cnt == 3'h1)clk_20m <= 1'b1;else if (cnt == 3'h4)clk_20m <= 1'b0;

康定县17227188945: 如何用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、...

康定县17227188945: 使用verilog语言实现分频器设计(50MHZ - 1HZ),得到秒脉冲 -
苗耿克淋: 分频呗,先50分频,从0~24时clkdiv=1,25~49时clkdiv=0;之后再10^6分频

康定县17227188945: 用Verilog HDL将50MHz分频得到1Hz,求大神指教 -
苗耿克淋: 代码如下,供参考 reg [24:0] cnt; reg clk_1hz; parameter C_25M = 25'd24_999_999; always@(posedge clk_50M or negedge rst) if (!rst) cnt <= 25'b0; else if (cnt >= C_25M ) // cnt <= 25'b0; else cnt <= cnt + 1'b1; always@(posedge clk_50M or negedge rst) if (!rst) clk_1hz <= 1'b0; else if (cnt == C_25M ) clk_1hz <= !clk_1hz;

康定县17227188945: 如何在fpga上实现将50M晶振频率分频为1HZ的信号? -
苗耿克淋: 前面的你就自己写了 我就写关键的地方 reg [25:0] cnt; //cnt为计数寄存器 always @(posedge clk or negedge rst_n) //这里的clk为50M时钟输入 if(!rst_n) cnt<=26'd0; else if(cnt==26'd50000000) cnt<=26'd0; else cnt<=cnt+1'b1; 对verilog 我也不是很熟 我想的话 应该是这样写的 如果有错 还请指教 谢谢

康定县17227188945: 如何用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_cntclk_divideend else if (clk_cnt == 10'd0)begin clk_cntclk_divideend else if (clk_cnt == 10'd500)begin clk_cntclk_divideend else clk_cnt endmodule

康定县17227188945: 使用Verilog HDL实现50MHz分频为50Hz -
苗耿克淋: module Frequency(nrst,clk_in,clk_out); input wire nrst; input wire clk_in; output reg clk_out; reg [18:0]r_cnt; always @(posedge clk_in) if(nrst) begin if(r_cntr_cntelse begin r_cntclk_outend end else begin r_cntclk_outend endmodule

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网