各位老师,朋友,个人总结不完善请留言。谢谢!!
组合逻辑: 只由逻辑门和电线构成,没有存储器件; 输出仅与输入有关,不存在任何时序关系(与时钟信号的上升沿,下降沿,电平均无关); 逻辑门的输出可以直接连接到其他门的输入端; 输出信号只由与之直接相连的输入信号相关;无存储电路,也无反馈电路。
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