sgdd.net
当前位置:首页 >> vErilog分频程序 >>

vErilog分频程序

1.将分频程序作为一个独立的module clkdiv(clk_in,clk_out),在另一个module(即顶层)中例化该模块,同时将clk_out作为其他模块的输入时钟;例化示例:module top_level() input clk; output .wire clkout;..clkdiv例化模块名字 clkdiv_int实例名字(.clk_in(clk),.clk_out(clkout))端口连接;//例化语句.endmodule2.直接将分频程序写在顶层中,并将分频后的输出作为其他模块的始终

module gen_divd(reset,clkin,clkout); input reset,clkin; output clkout; parameter divdWIDTH=1; //参数定义 parameter divdFACTOR=1; reg clkout; reg [divdWIDTH:0] cnt; //2位计数器,最大记到3 always @ (posedge reset or posedge clkin) if(reset) /

偶数分频可以向你这样实现,如果是奇数分频,你这样无法实现,给你换种实现方法:module fenpin_module( CLR, CLK, SW, CLKOUT); input CLK; //输入时钟 input CLR; input [2:0]SW; output CLKOUT; //输出时钟 //参数--分频系数

假设你的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(clkin,clkout,rst);input clkin; //Input Clockinput rst; //Async Reset signal, active highoutput clkout; //Output signal divided by tworeg clkout;always @ (posedge clkin or posedge rst) if(rst) clkout 评论0 0 0

这个要设置rom的,设置好rom然后直接调用,可以在rom里面设置好你自己需要的各个分频,然后在程序里面调用,还可以实现调频和歌曲的频率调整,详细的话你可以参考别人的歌曲是如果编程的,大概也是差不多

module sdio_slave( clk_100m,rst,clk_1m ); input clk_100m; input rst; output clk_1m; reg clk_1m; reg [7:0]div_cnt; always@(posedge clk_100m or negedge rst)begin if(!rst) div_cnt<= 8'b0; else if(div_cnt==49) div_cnt<=8'b0; else div_cnt<=div_cnt+8'

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

module freq(out,clk,reset);input clk,reset;output out;reg out;reg[2:0] count;always @(posedge clk or negedge reset)if(!reset) begin out 评论0 0 0

1'b0就是一根接入逻辑零(GND)的线.1'b1就是一根接入逻辑一(VCC)的线.

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