Electronics 板


LINE

先说我不是高手!但是在verilog中略有心得 PTT的C_CPP版得知Programing版 在Programing版讨论HDL串中发现此版 小小的浏览一下发现对於verilog有很多讨论 就想在此与版友分享 ----------------癈话完毕-------------------- Verilog Code是硬体,写出来的就是元件(不只是语法) 所以,新手要练到 1.在写的同时,可以知道自己写的是什麽元件 2.在合成的同时,可以知道合成出来的档是什麽 是一件很重要的事 先来说第一件事 「在写的同时,可以知道自己写的是什麽元件」 要对於语法与元件的意义了解到某种程度,才可以掌握得很好 那语法要怎麽了解呢?(此篇先讨论这件事吧?!) HDL大致上分成两种电路 1.有clk 2.无clk 学术上(或业界)使用的词很多!像Gate level、RTL...来分类电路 在此尽可能不要提这些专有名词(因为我也搞不太懂) 「有clk」的电路属於「受时间控制」的电路 也就是 触发时 输入是什麽,输出才是什麽,花的时间以clk数(全波)计算 例如: 在Verilog中 always@(posedge clk) 表示 在clk正缘触发时,以下电路动一次 always以下描述的电路随clk的正缘变化才存在(动作)! 输入是什麽东西,变化了几次,都不存在(动作或影响)... 这也是最常见的写法 还有「<=」的语法 「<=」代表不等待上一行回应,完成马上执行 (这观念是老师教的,我自己还没有很懂!但老师的确是这样讲的没错) 我自己的理解是「触发同时执行」(相同时间,也就是随时间控制) 所以「<=」会放在「always@(正缘或负缘 clk)」的里面。 还有「reg」的语法 在特定时间时,才更新内容的电路元件 不然储存的内容不变(储存功能就这样出现了) 所以「reg」会放在「<=」的左边,因为要更新资讯。 「无clk」的电路属於「不受时间控制」的电路 : -也就是输入是什麽,输出马上就是什麽,花的时间以gate count计算 +也就是输入是什麽,输出马上就是什麽,花的时间以gate delay计算 //bakerly更正 例如: 在Verilog中 assign ... assign後面描述的电路为永久存在! 只要输入变化,输出也就会马上变化 (因为没有时间条限制电路的存在性) 同义写法为(个人不常这麽写,不过很多assign可以用这个取代) always@* 或 always@(a, b, c, ...)(没有正负缘) 还有「=」的语法 「=」代表等待上一行回应後,再执行 (这观念是老师教的,我自己还没有很懂!但老师的确是这样讲的没错) 就是不随时间影响,永久存在的电路(接线之类的) 所以「=」会放在always@(正缘或负缘 clk)外面 还有「wire」的语法 字面上是线,但是它代表永久存在的资料空间,只要输入改变输出就改变 (所以,不拿来用在储存资料)常用在元件之间的立即传递资料 这种电路速度极快!不用等clk完成全波,马上就可以做很多动作(只要输入一直变) 但是容易失控 ---------------------------------------------------------------- 接下来讲常见句子 先说无clk的 assign a = (c > 10) ? b : b+1; (c > 10)? 也就是 if(c > 10)(这种写法在有clk的比较常见,只差在一个DFF) 代表一个方块,里面很多逻辑闸,在条件成立时输出为hi(1bit的讯号输出) 这个方块已经在synthesis时最佳化(用数位逻辑教的方法) 输出的线接给一个2to1的选择器 输入都算好了 b, b+1,输出就等选择的线决定谁要输出 assign a = b + c; assign a = b; assign a = .... 剩下的我想不用我多说了!多练习就可以看懂复杂的Gate level电路了! 再说有clk的电路 always@(posedge clk) 代表以下电路都有接clk这条线,并且是正缘触发(没有小圆圈) +---- +---- clk | clk | ----|> ----o|> | | +---- +---- 正缘 负缘 always@(poedge clk, negedge rst) begin if(!rst) → 在此一定要使用!,而且上面的negedge rst一定要写 ... end 有写 negedge rst 电路不会把 if(!rst) //若rst负缘触发 当作是 if(rst == 0) //若rst低准位 或 if(~rst) //若rst低准位 在有clk影响的电路将clk和rst设定好之後,就看见以下的语法(常用语法) (因大多数电路都是用DFF组成, 所以rst通常都会设定,不过也有不用的时候!) always@(posedge clk, negedge rst) //正负缘看需求订定 begin if(!rst) begin ....(初始化设定) end else begin ....(电路function) end end 以上,应该可以应付很多新手观念上模糊的问题了! 之後只要依一开始讲的方向去做,合成完看RTL、synthesis report的时间估计 以及档案之间的变化,慢慢的就可以成为高手了! 而合成的过程也可以在coding时掌握住!也就有写元件的感觉了.... 在那时,如果有人问你,你可以说「我不是高手!不过略懂..」 跟别人分享心得,互相成长! --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.80.140.211
1F:推 pachingoo:推 04/17 18:48
2F:推 xwxw:推 04/17 20:02
3F:推 robertshih:"="与"<="的涵意很深 如果做到synthesis就看得出差异了 04/17 20:25
4F:推 pupucar:不使用专有名词而喜欢用自己的语言 等你出来工作就知道死 04/17 20:45
5F:→ pupucar:除非你天纵英才 可以一人搞定专案 都不用cowork的 04/17 20:47
6F:→ Zephyr750:楼上!只是本篇不用!不代表一辈子不用....XD 04/17 20:53
7F:推 echw:推!! 不过很多东西还是自己摸过才知道 04/17 21:25
8F:→ echw:像前面有人说的 "=" 和 "<=" 不完全是原PO所解释得如此 04/17 21:26
9F:→ echw:比较简单的用法里面 "="可以用在你像是写"c语言"那样用 04/17 21:28
10F:推 echw:初学者通常会在"="和"<="有疑问 是因为写道"always" 04/17 21:30
11F:→ echw:always里面的描述 可以类似电路化的思考 用"<=" 04/17 21:32
12F:→ echw:或者"c语言"的方法 用"=" 这是比较基础的概念 04/17 21:32
13F:→ Zephyr750:我个人不推荐把c语言和HDL语言拿来比较或介绍观念... 04/17 21:41
14F:→ Zephyr750:我改一下好了! 04/17 21:42
※ 编辑: Zephyr750 来自: 114.33.224.25 (04/17 21:45) ※ 编辑: Zephyr750 来自: 114.33.224.25 (04/17 21:46)
15F:→ Zephyr750:好像愈改愈看不懂!^^" 04/17 21:47
16F:推 echw:已经写得很好了XDD 04/17 21:55
17F:推 maxwellee:推推推 04/18 02:24
18F:推 luckyBF:推一下 04/18 07:39
19F:推 masage0514:大大 我想请问 !rst跟~rst难道不一样吗?差在哪?谢谢 04/20 12:48
20F:→ uxijgil:reg不一定是受时间控制的 ex: reg a; always @(*) a = b; 04/20 21:35
21F:→ uxijgil:!(2'b10) = 1'b0 ; ~(2'b10) = 2'b01 ; 对单讯号则没差 04/20 21:37
22F:→ Zephyr750:~所有bit反向, ! 1'b1(最小的bit)反向 04/20 23:20
23F:→ Zephyr750:!(2'b10) = ~(1'b0) = 1'b1 好像是这样才对 04/20 23:23
※ 编辑: Zephyr750 来自: 114.33.224.25 (04/21 00:02)
24F:推 Pash77:错 !2'b10 = ~(2'b10==0) = ~0 = 1 不然你用 !2'b01 就知 04/21 06:42
25F:→ Pash77:我也写错! 是 !=0 才对 04/21 06:43
26F:推 Pash77:!rst = !(rst!=0) 所以 rst=0 时 !(0!=0)=!0=1 04/21 06:46
27F:→ Pash77:这个全华中译本应该有吧? 04/21 06:48
28F:推 pikachu2005:推~+1 04/21 13:55
29F:推 potatojerry: ~: bitwise, ! : logical 04/22 23:09
30F:→ bakerly:gate count是面积单位,不是时间单位, wire真的就是线 04/23 22:08
※ 编辑: Zephyr750 来自: 59.120.98.226 (11/14 11:23)
31F:推 tj0706: 推推 04/07 11:34
32F:→ sneak: !(2'b10) = https://muxiv.com 08/13 19:11
33F:→ sneak: 不使用专有名词而喜欢用 https://daxiv.com 09/17 23:05







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:WOW 或 站内搜寻

TOP