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口声明 input clock; //输入时钟 output clk_out; //输出时钟//内部寄存器 reg clk_p_r; //上升沿输出时钟 reg clk_n_r; //下降沿输出时钟 parameter f_div_width = 32; //分频计数器宽度 reg[f_div_width - 1:0]

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

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

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

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分频程序.

100MHZ就是1亿,分频到500,就是1亿/500=20万,只需要时序计数,逢20万一个周期即可,即10万一次信号翻转

不知道考试是什么难度的 但是一般的n分频(n是2的整倍,即n是偶数)都是通过计数来实现,从0时刻开始,每一个原始时钟上升沿(或下降沿,整个分频过程基于同一边沿)计数一次,计满n/2则将输出信号(分频时钟输出)翻转一次,再计n/2又翻转一次,如此反复如果要求奇数分频,则对原始时钟的上升沿和下降沿都计数,计满n翻转一次输出时钟信号即可

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