wire 和 reg 两者差别很大。
在Verilog中,wire永远是wire,就是相当于一条连线,用来连接电路,不能存储数据,无驱动能力,是组合逻辑,只能在assign左侧赋值,不能在always @ 中赋值;
但reg可以综合成register,latch,甚至wire(当其只是中间变量的时候),可以用于组合逻辑或者时序逻辑,能存储数据,有驱动能力,在always @模块表达式左侧被赋值。两个共同具有性质:都能用于assign与always @模块表达式的右侧。
FPGA的输入输出
FPGA的输入输出列表
初学FPGA的同学往往会有一个小的易错点,即在顶层模块和子模块的输入输出列表中定义输入输出时,不知道到底要不要加reg,也就是不清楚输入输出端口的类型。
在FPGA里面,输入输出都是以FPGA的芯片为第一人称来讲的。
通俗讲就是芯片内部往外输出信号就是output,外面的信号往芯片内部输入就是input。
举个例子,你的主时钟50MHZ,是在芯片外面的晶振把信号输入进来,所以clk就是input。外围的ic器件的分析都是一样的。需要LED灯点亮,就需要从芯片内部向外部的LED灯发送控制信号,所以led就是output。
关于输入输出
Verilog HDL语言中端口有3种传输方向:input、output、inout。所以端口均默认为wire类型。
模块描述时:input:wire&