程序求解释

[复制链接]
1207|3
 楼主| pkat 发表于 2013-8-31 21:36 | 显示全部楼层 |阅读模式
go, RS, ST, ge, TE
下面的代码谁给我大概描述一下
reg clk_12m,clk_6m,clk_3m,clk_2m,clk_1m,
    clk_512k,clk_256k,clk_128k,clk_64k,clk_32k,
    clk_16k,clk_8k,clk_4k,clk_2k,clk_1k;       
reg rst_count1,rst_count2,rst_count3,rst_count4;
reg[3:0] counter;
reg timer_flag=1'b0;
reg[3:0] pwr48v_good_count1,pwr48v_good_count2,pwr48v_good_count3,pwr48v_good_count4;

//generate clk
always @ (posedge CPLD_CLK_25M) clk_12m  <= ~clk_12m;
always @ (posedge clk_12m)          clk_6m   <= ~clk_6m;
always @ (posedge clk_6m)          clk_3m   <= ~clk_3m;
always @ (posedge clk_3m)          clk_2m   <= ~clk_2m;
always @ (posedge clk_2m)          clk_1m   <= ~clk_1m;
always @ (posedge clk_1m)          clk_512k <= ~clk_512k;
always @ (posedge clk_512k)         clk_256k <= ~clk_256k;
always @ (posedge clk_256k)     clk_128k <= ~clk_128k;
always @ (posedge clk_128k)         clk_64k  <= ~clk_64k;
always @ (posedge clk_64k)          clk_32k  <= ~clk_32k;
always @ (posedge clk_32k)          clk_16k  <= ~clk_16k;
always @ (posedge clk_16k)          clk_8k   <= ~clk_8k;
always @ (posedge clk_8k)          clk_4k   <= ~clk_4k;
always @ (posedge clk_4k)          clk_2k   <= ~clk_2k;
always @ (posedge clk_2k)          clk_1k   <= ~clk_1k;

always@(posedge clk_1k)
begin
if(!EN_VCC12V)
begin
          counter<=4'b0000;
          timer_flag<=1'b0;
end
else begin
        if(counter!=4'b1111)
begin
          counter<=counter+1'b1;
          timer_flag<=1'b0;
        end
        else begin
          timer_flag<=1'b1;
          counter<=4'b1111;
  end
end
end
hsbjb 发表于 2013-8-31 21:49 | 显示全部楼层
就是个4位的计数器(0~15)。
(1)EN_VCC12V低电平同步reset,计数器清0,标志清0。
(2)把25MHZ的时钟源分频到1KHZ,上升沿驱动一个计数器。当计满到15的时候,计数器保持不变,标志置1
无冕之王 发表于 2013-8-31 22:19 | 显示全部楼层
计数器分频 然后时钟使能
yybj 发表于 2013-8-31 22:26 | 显示全部楼层
verilog啊,想当年做课设的时候,还写了好多呢。看一楼说的就可以了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

196

主题

2726

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部