【Day07】Behavior Level

always block

  • always 若超过一行要用 begin、end 包起来。
  • always 内的变数若要赋值(等号左边的变数)必须是 reg 型态,而等号右边可以是 wire 或 reg 。
  • always的触发条件若超过一项则以 "," 或是 "or" 区分。
  • 正缘触发用 posedge,负原则是 negedge。
  • 若想以任意一个讯号 b 的变动来当作触发原则是写成 always@(b)
  • 若想随时执行这个 block 写成 always@(*)

EX:

always@(posedge clkSys or negedge rst_n)begin
  if(!rst_n)begin
    .....
  end
  else begin
    .....
  end
end


if-else语句

这里的 if-else 跟 C 语言是相同的用法,不过值得一提的是,在写 verilog 时 else 最好要写,避免电路的描述不完整,容易产生 latch。

EX:

if(...)begin
  if()begin
    ....
  end
  else begin
    ....
  end
end
else if(...)begin
  ....
end
else begin
  ....
end

case、casex、casez语句

  • 一般 case 中的 item 不能有 "z" 或是 "x" ,只能出现 "0"、"1"。
  • casez 中的 item 值除了 "0"、"1" 外,"z" 也可以出现。
  • casex 中的 item 值除了 "0"、"1" 外,"z" 及 "x" 都可以出现。
  • 最後记得 endcase。
  • 除外的状况写在 default 内。

EX:

case(...)
  item_1:begin
    ....
  end
  item_2:begin
    ....
  end
  item_3:begin
    ....
  end
  item_4:begin
    ....
  end
  default:begin
    ....
  end
endcase

这边的 default 跟 if-else 中的 else 一样,不管有没有用,最好都加上去,避免导致 latch。


<<:  Day 7 python字典

>>:  [Day 8] Vue的模板语法(Template Syntax)---插值

倒数第3天

大家安安 突然发现有人关注 但是~ 前面的坑还没有补好 後面很难写 不过这篇我预计会写"算...

Day 30. 要别人看不懂,还是让自己看不懂的 - 混淆 Obfuscation

App 混淆再资安保护领域来说,可谓是最复杂的一环,也是最重要的一环 但是资安检测无法有个标准的检...

【Day8】在本地简单的建立 django(Django API Server的架设 1/3)

基本上目前看到的方法大致上都如下图所示,所以我目前实作的也是如此, 因为脑子里没有更好的解决方案(在...

Day15 - 在 Next.js 做 JWT 验证,使用既有的 Backend API - PART 1

NextAuth + JWT authentication 虽然 Next.js 的定位是一个全端框...

[Day 23] - React 取得永丰汇率api的json资料(1)

学会游泳会好的方法就是掉进水里 今天就直接来用react 取api 我直接参考React官网的教学:...