FPGA 组合逻辑 wire assign 、时序逻辑 reg always使用总结

本文介绍了组合逻辑和时序逻辑的区别,组合逻辑不依赖于时钟,输出仅与当前输入相关,而时序逻辑的输出则受到历史输入的影响,涉及存储元件如计数器、寄存器。在FPGA的V_HDL编程中,使用wire声明组合逻辑的变量,用assign进行阻塞赋值;对于时序逻辑,使用reg声明变量,always块中使用非阻塞赋值。
摘要由CSDN通过智能技术生成

各位老师,朋友,个人总结不完善请留言。谢谢!!

组合逻辑: 只由逻辑门和电线构成,没有存储器件; 输出仅与输入有关,不存在任何时序关系(与时钟信号的上升沿,下降沿,电平均无关); 逻辑门的输出可以直接连接到其他门的输入端; 输出信号只由与之直接相连的输入信号相关;无存储电路,也无反馈电路。
FPGA_V_HDL使用:用wire 定义变量而不是端口,  assign 变量 =((条件)&&(条件)或(条件)非(条件))

例:
wire  touch_flag;
assign touch_flag = ((touch_key1==1'b0)&&(touch_key2==1'b1));//阻塞型赋值

时序逻辑:任何时刻的输出,与该时刻的输入信号有关+该时刻以前的输入信号(存储电路:计数器、寄存器、触发器、时钟翻转,锁存器)共同决定。
FPGA_V_HDL使用:用reg 定义变量而不是端口,
 always@(敏感事件列表)
   if(输入信号条件)
           begin
            <=//非阻塞赋值  因为是 时序逻辑=组合逻辑+存储,必须等 begin    end 语句end执行完才能同时赋值

例:
reg  touch_key1;
reg  touch_key2;
always@(posedge sys_clk or negedge sys_rst)
     if(sys_rst==1'b0)
              begin
                  touch_key1 <= 1'b1;
     touch_key2<= 1'b1;
       end


阻塞赋值:      “=”  立即执行,不会执行下条语句
非阻塞赋值:   “<=”把begin至end之间语句都执行完后(end也执行完)把1'b1赋值给touch_key1 ,touch_key2

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值