FPGA 语言verilog 和VHDL
讲到FPGA语言就不得不讲verilog 和VHDL
本人大学学的是VHDL,工作就一直在用VHDL
我觉得veilog更接近底层,关键是更接近C,所以被FPGA工程师所喜欢
HDL特别是Verilog HDL得到在第一线工作的设计工程师的特别青睐,不仅因为HDL与C语言很相似,学习和掌握它并不困难,更重要的是它在复杂的SOC的设计上所显示的非凡性能和可扩展能力。 在学习HDL语言时,笔者认为先学习VerilogHDL比较好:一是容易入门;二是接受Verilog HDL代码做后端芯片的集成电路厂家比较多,现成的硬核、固核和软核比较多。
实现起来
veilog更容易实现
比如说要例化多个模块,我们就可以用for语句,并且这个是可综合的
我们在申明总线时,由于比较繁琐的语句的时候,稍不注意还会有书写错误
也许在veilog里面,只需要一个for语句就能搞定
begin : loop
integer i;
for(i = 0; i <= 7; i = i + 1)
begin
if(int_stat_clr
==1)
int_stat <= 0 ;
end
end // block: loop71
这就话的意思就是如果stat_clr寄存器某一位为1,那么相对应的stat下面的一位就为1,这样写是不是很简单.
说说wire 和reg的区别
我们可以说reg相当于存储单元,wire相当于物理连线,但是新学FPGA的会问,存储单元是什么,其实说白了就是D触发器,有人问D触发器是什么,我晕,兄弟,学习数电的时候是不是一直在睡觉,有木有啊!
如果还是搞不明白,那你可以这么认为,wire相当于物理连线,就当与铜丝,PCB板子的走线,reg相当于芯片。wire走线延时小,几乎可以忽略不计。reg一个时钟的延时,这样就够了。
赋值:
wire对应的是assign,always,reg对应的always或者initial。
例如:
assign a = b ;把b点和a点相连接
always @(b)
a =b ;
表示变化出发
always @(posedge clk)
a<=b ;
把b线经过一级D触发器给a
可以看出
这时:
1、wire型的变量综合出来一般是一根导线;
2、reg变量在always块中有两种情况:
(1)、always后的敏感表中是b 形式的,也就是不带时钟边沿的,综合出来还是组合逻辑
(2)、always后的敏感表中是(posedge clk)形式的,也就是带边沿的,综合出来一般是时序逻辑,会包含触发器(Flip-Flop)
FPGA用的所有的信号赋值都是wire 和 reg ;
学会了这两个也就掌握了FPGA的基本
本文来自论坛,点击查看完整帖子内容。