蜗牛请进~

[复制链接]
3220|18
 楼主| lover9 发表于 2009-12-22 09:53 | 显示全部楼层 |阅读模式
你说要当我师傅的,俺现在有个Verilog 程序问题请教,请看:

reg  [24:0] count;
wire    clk;
//--计数分频-------------------------------------
always @ (posedge clkin)
    //count <= count+1;
    count <= count+4;
assign clk = count[24];
上面的“<= ”表示什么?书上说是“小于等于”,感觉像赋值哦,何解?

PS:留下你的联系方式,以后~
lelee007 发表于 2009-12-22 11:55 | 显示全部楼层
倒塌

非阻塞赋值啦

靠,你Y也该先把书翻两下吧?!
 楼主| lover9 发表于 2009-12-22 12:54 | 显示全部楼层
谢谢LS,我知道了~
一只小蜗牛 发表于 2009-12-22 14:07 | 显示全部楼层
本帖最后由 一只小蜗牛 于 2009-12-22 14:08 编辑

小lover,这是我前几天EDA板块写的,你可以玩一下。
突然玩心大起,我给大家写了一个参数化的50%占空比的模块。从0-255 皆可,当然了,你可以轻而易举地把它扩大到更大的范围。写得匆忙,没写注释,不要见笑。一个重要建议是:如果用分频器产生的频率时(这已经是异步的了)最好先把他输出到外面,在从PAD环回来,这样可以避免FPGA神经错乱。不过不是迫不得已,我既不建议使用下降沿,也不建议使用异步设计。还是同步设计稳定。
`timescale 1ns/10ps
module divider (
   clock  ,   // input clock
   resetb ,   // input reset
   freqout    // output divided frequency
);

parameter freq_div = 2 ;

input    clock   ;
input    resetb  ;
output   freqout ;

wire   clock   ;
wire   resetb  ;
wire   freqout ;

reg   [7:0] counter    ;
wire  [7:0] freq_divid ;
wire  [7:0] freq_div2  ;
reg         freq_even  ;
reg         freq_odd0   ;
reg         freq_odd1   ;
wire        freq_odd   ;
assign freq_divid = freq_div ;
assign freq_div2  = freq_divid >> 1;

always @(posedge clock or negedge resetb )
begin
   if ( ~ resetb )
   begin
      counter <= 8'h00 ;
   end
   else if ( counter == freq_div - 1 )
   begin
     counter <= 8'h00 ;
   end
   else
   begin
     counter <= counter + 1'b1 ;
   end
end

always @(posedge clock or negedge resetb )
begin
   if ( ~ resetb )
   begin
      freq_even <= 1'b0 ;
   end
   else if ( freq_divid[0] == 1'b0 )
   begin
      if ( counter == freq_div2 - 1 )
      begin
         freq_even <= 1'b1 ;
      end
      else if ( counter == freq_div - 1 )
      begin
         freq_even <= 1'b0 ;
      end
   end
   else
   begin
      freq_even <= 1'b0 ;
   end
end

always @(posedge clock or negedge resetb )
begin
   if ( ~ resetb )
   begin
      freq_odd0 <= 1'b0 ;
   end
   else if ( freq_divid[0] == 1'b1 )
   begin
      if ( counter == freq_div2 - 1 )
      begin
         freq_odd0 <= 1'b1 ;
      end
      else if ( counter == freq_div - 1 )
      begin
         freq_odd0 <= 1'b0 ;
      end
   end
   else
   begin
      freq_odd0 <= 1'b0 ;
   end
end
always @(negedge clock or negedge resetb )
begin
   if ( ~ resetb )
   begin
      freq_odd1 <= 1'b0 ;
   end
   else
   begin
      freq_odd1 <= freq_odd0 ;
   end
end

assign freq_odd = freq_odd0 & freq_odd1 ;

assign freqout = ( freq_div <= 1 ) ? clock : freq_odd | freq_even ;


endmodule
一只小蜗牛 发表于 2009-12-22 14:47 | 显示全部楼层
有问题给我发短消息。
 楼主| lover9 发表于 2009-12-22 14:58 | 显示全部楼层
晕,现在连Verilog语法都没弄清,惭愧,等段时间,我成熟了,再来研究哈~
lelee007 发表于 2009-12-22 15:32 | 显示全部楼层
icecut 发表于 2009-12-23 11:04 | 显示全部楼层
一只小蜗牛 发表于 2009-12-23 11:10 | 显示全部楼层
赶紧去搞掉电梯女,你就是熟男了
xwj 发表于 2009-12-23 11:33 | 显示全部楼层
lelee007 发表于 2009-12-23 15:18 | 显示全部楼层
赶紧去搞掉电梯女,你就是熟男了
一只小蜗牛 发表于 2009-12-23 11:10

;P
w272978559 发表于 2009-12-31 15:07 | 显示全部楼层
:dizzy:和看天书一样.嘛也看不懂  看来还是荒废了我的学习生涯:'(
sleepybear 发表于 2009-12-31 15:25 | 显示全部楼层
先找本Verilog的基础书看看吧。。。:L
夏宇闻那本口碑不错。
w272978559 发表于 2009-12-31 15:30 | 显示全部楼层
13# sleepybear :( 回头找找去
candy朦朦 发表于 2010-1-5 17:47 | 显示全部楼层
赶紧去搞掉电梯女,你就是熟男了
一只小蜗牛 发表于 2009-12-23 11:10


同意蜗牛

我先看C++吧~~~~~~~
飘去
candy朦朦 发表于 2010-1-5 17:48 | 显示全部楼层
先找本Verilog的基础书看看吧。。。:L
夏宇闻那本口碑不错。
sleepybear 发表于 2009-12-31 15:25


那给个电子书啦,粉期待
 楼主| lover9 发表于 2010-1-5 18:37 | 显示全部楼层
我去下载看看~
w272978559 发表于 2010-1-6 10:34 | 显示全部楼层
去吧 能下载就是好啊~~  我们这都不能百度..
 楼主| lover9 发表于 2010-1-6 10:48 | 显示全部楼层
我已经下载,瞅了一下,还行,不过工作可没时间让我从头看了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:1、我故意学习,故意工作,故意生活,故意活得像个人。 2、以后不要在我面前说英文,OK? 3、青春就像卫生纸。看着挺多的,用着用着就不够了。

122

主题

1887

帖子

1

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