搜索
bottom↓
回复: 13

FPGA新人请教个运算符的问题,关于<=的运算

[复制链接]

出0入12汤圆

发表于 2012-8-30 08:38:12 | 显示全部楼层 |阅读模式
这是某个例子里面
module led1 (clk ,led);    // 模块名及端口参数
input clk;                // 输入端口定义
output [7:0]led;        // 输出端口定义
reg [7:0]led;          // 输出端口定义为寄存器型
reg [25:0] buffer;       // 中间变量buffer定义为寄存器型
always@(posedge clk)  
      begin             // 顺序语句,到end止
           buffer<=buffer+1; // 计数器buffer按位加1
           if(buffer==26'd25000000) //判别buffer中的数值为25000000时,
                                   //做输出处理
            begin
                 led<=~led; // led[0]-led[7]反转一次。
                 buffer<=0;
          end
       end
endmodule   

就是   buffer<=buffer+1; // 计数器buffer按位加1
这句不理解啊. 这个不是   buffer= buffer+1; 吗??
这句的运行过程是怎么样的啊?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2012-8-30 08:42:26 | 显示全部楼层
建议楼主随便找本 verilog语法书看看 非阻塞赋值和阻塞赋值的区别

出0入0汤圆

发表于 2012-8-30 08:55:57 | 显示全部楼层
都是x++的意思,但一个是阻塞赋值一个是非阻塞赋值
貌似最近玩fpga的人很多,先对阻塞和非阻塞搞清楚

出0入0汤圆

发表于 2012-8-30 08:56:30 | 显示全部楼层
LS的, 怎么这么跟论坛元老说话呢

出0入12汤圆

 楼主| 发表于 2012-8-30 08:57:55 | 显示全部楼层
mcu1815 发表于 2012-8-30 08:42
建议楼主随便找本 verilog语法书看看 非阻塞赋值和阻塞赋值的区别

兄弟,能推荐本verilog语法书看看吗,我在网上找了很多,感觉没有经典的啊
就像C语言,最经典的就是谭浩强老大的那本了.这个verilog语法书有类似经典的吗

出0入12汤圆

 楼主| 发表于 2012-8-30 08:58:47 | 显示全部楼层
philoman 发表于 2012-8-30 08:56
LS的, 怎么这么跟论坛元老说话呢

木有啥子啦,FPGA真的是需要转换思想啦.不能沉溺于 C  之中啦

出0入0汤圆

发表于 2012-8-30 09:02:23 | 显示全部楼层
verilog的书推荐夏老师的《verilog数字系统设计教程》

出0入0汤圆

发表于 2012-8-30 09:17:17 | 显示全部楼层
为了工作,抓紧学习FPGA !

出0入0汤圆

发表于 2012-8-30 09:17:56 | 显示全部楼层
skynet 发表于 2012-8-30 08:57
兄弟,能推荐本verilog语法书看看吗,我在网上找了很多,感觉没有经典的啊
就像C语言,最经典的就是谭浩强老 ...

如果单论verilog语法,推荐国外写的《Verilog HDL入门》,当然如果初学的话,看夏闻宇的书就好了

出0入0汤圆

发表于 2012-8-30 09:51:01 | 显示全部楼层
我不太了解阻塞与非阻塞名詞,因為我們這裡並沒有使用這樣的名詞...

以下必須 3 clk s3=Din
begin
if(clk)
begin
  s1<=Din;
  s2<=s1;
  s3<=s2;
end
end

以下只須知 1 clk s3=Din
begin
if(clk)
begin
  s1=Din;
  s2=s1;
  s3=s2;
end
end

出0入0汤圆

发表于 2012-8-30 13:18:15 | 显示全部楼层
阻塞赋值顾名思义就是阻碍了下一句执行
非阻塞赋值就是不阻碍下一句的执行
这些都是verilog的叫法,vhdl好像叫0延时和delta延时

出0入442汤圆

发表于 2012-8-30 13:35:58 | 显示全部楼层
那种写法对不同的综合器而言,综合出的东西不一定相同。建议的写法是
if(counter == xxx -1)
begin
xxx
end
else
counter <= counter + 1;
这样的写法可以保证综合唯一性,即对于每一个if,必须有一个终结else,否则综合器很容易综合出latch,进而导致项目失败。

出20入186汤圆

发表于 2012-8-30 17:25:58 | 显示全部楼层
简单理解为并行和串行~

出0入0汤圆

发表于 2012-8-31 16:28:28 | 显示全部楼层
个人推荐nawabi的书或者ciletti的书,夏的书也可以看,不过那本书应该不全是他写的,后面有部分写得不怎么样而且不是很连贯,猜测是研究生的杰作。
还有一个外国人写的verilog-HDL primer感觉很适合入门,很薄的一本书,但最基础的都涵盖了。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-24 09:31

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表