sgdd.net
当前位置:首页 >> vErilog设计分频电路 >>

vErilog设计分频电路

纯粹的数字电路是不能实现3.5分频的.不要求综合的,Verilog可以实现.大致思路是7分频,然后分成2路信号:1路信号不变化,另一路延时180度,然后二个信号 相互与. 如果问FPGA如何我实现,可以使用时钟管理单元的功能,具体方案如

假设你的clk就是1s周期的时钟 那么10s的应该是这么写 reg [3:0] cnt_10; reg clk_10s; always @ (posedge rst or posedge clk) begin if (rst) begin cnt_10 clk_10s end else begin if (cnt_10==4) begin cnt_10 clk_10s end else begin cnt_10 clk_10s end end60的,cnt就在29归零,同时clk_60s反向 是在半周期反向才是占空比1:1.

module fenpin_module(clock,clk_out);//I/O口声明inputclock;//输入时钟outputclk_out;//输出时钟//内部寄存器regclk_p_r;//上升沿输出时钟reg clk_n_r;//下降沿输出时钟parameter F_DIV_WIDTH = 32; //分频计数器宽度reg[F_DIV_WIDTH - 1:0] c

计数器,到了就去反再看看别人怎么说的.

50000000/160000/2=156.25hz 因为你这边是取反,高低电平要两个160000才是一个周期,所以要除以2 else if(cnt1 == freq_1) clk_out_r1 <= ~clk_out_r1;

不可以,fpga的pll可以分频倍频,用pll去实现,一般的芯片没那么多ipcore,你的太多了,可能实现不了,如果要求不严格,用时序实现吧.不用arm,arm没有用.

module three(clk,throut) ;input clk ;output throut;reg q1,q2,d,throut;always @(posedge clk)if(!d)q1=1'b1;elseq1=~q1 ;always @(negedge clk)if(!d)q2=1'b1;elseq2=~q2 ;always @(q1 or q2)d=q1&q2 ;always @(posedge d)throut=~throut;endmodule

module div_5 ( clkin,rst,clkout );input clkin,rst;output clkout;reg [3:0]cnt;always @(posedge clk or negedge rst) if (!rst) cnt<=0; elsif (cnt>=4 ) cnt<=0; else cnt<=cnt+1;assign clkout=(cnt<3)?1:0;endmodule ;给你写一个,这是5分频程序.

module fenpin_module(clock,clk_out);//i/o口声明inputclock;//输入时钟outputclk_out;//输出时钟//内部寄存器regclk_p_r;//上升沿输出时钟reg clk_n_r;//下降沿输出时钟parameter f_div_width = 32; //分频计数器宽度reg[f_div_width - 1:0] c

关于分频的话,建议使用pll,首先可以保证相位,占空比,稳定性没问题,如果实在要用的话,可以使用一个计数器,技计数到10可以翻转,这样就可以了.简单吧,另外有问题的话可以继续追问我.

网站首页 | 网站地图
All rights reserved Powered by www.sgdd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com