作者eroha90021 (我是学电的收回了 现在蛮)
看板Electronics
标题[问题] Verilog中Assign reg会不会冲突
时间Thu Mar 25 17:47:28 2021
如题,我在一本书中看到一段讲D Flip-flop的code
他的code有一段如下
always@(negedge clk) begin
q=d;
qbar=~d;
end
always@(reset)
if(reset)
begin
assign q=1'b0;
assign qbar=1'b1;
end
else
begin
deassign q;
deassign qbar;
end
endmodule
这段文字中的q和qbar都是用reg储存
并且在reset的时候锁住q=0,qbar=1,reset解除才可变更q值
我想问的问题是,假设reset=1,在negedge被触发的时候,q不会因为被assign成d,
又被assign成0,导致error发生吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.117.248.2 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1616665650.A.F9C.html
1F:→ samm3320: 现在好像不能这样写 03/25 18:25
2F:推 Battie: 在always block内要宣告reg,宣告reg就不能用assign 03/25 21:42
reg不是就是一种assign吗 大的意思是不能把值用assign把本来的盖掉吗 谢谢
3F:推 mmonkeyboyy: 现在不要用这个了 用always_ff _comb _latch 03/26 01:47
好我晚点找找 谢谢你
4F:→ mmonkeyboyy: 这样写满满的 synth errors 学一下新的吧 03/26 01:55
5F:推 kk887799: 问一下哪本书 03/26 08:57
黄英叡的verilog硬体描述语言 蛮旧的书了 十年有
※ 编辑: eroha90021 (140.117.248.3 台湾), 03/26/2021 11:08:09
※ 编辑: eroha90021 (223.139.214.247 台湾), 03/26/2021 11:08:45
6F:→ samm3320: assign是用来描述组合逻辑的 03/26 11:12
大大的意思是如果有让reg assign wire的话,如果要再接其他线路,要先deassign这样吗
7F:→ samm3320: 你不能用英文去理解要用verilog去理解 03/26 11:12
※ 编辑: eroha90021 (223.139.214.247 台湾), 03/26/2021 11:13:33
※ 编辑: eroha90021 (223.139.214.247 台湾), 03/26/2021 11:15:12
8F:→ samm3320: 不是啦,reg就不是组合逻辑啊 03/26 11:17
9F:→ samm3320: 现在也没什麽在用deassign 03/26 11:26
10F:→ samm3320: 写code之前先去了解一下combinational 跟 sequential lo 03/26 11:33
11F:→ samm3320: gic吧 03/26 11:33
12F:→ samm3320: 接下来去了解怎麽写会合出怎麽样的电路,才不会写出没法 03/26 11:35
13F:→ samm3320: 合成的code 03/26 11:35
14F:推 mmonkeyboyy: assign 不能在always里 给你参考一下 03/26 12:03
15F:→ mmonkeyboyy: 那一个连续概念 也就是他是条线 03/26 12:04
16F:→ mmonkeyboyy: 这算很旧的verilog 现今SV都会要求写_ff _comb _latc 03/26 12:04
17F:→ mmonkeyboyy: h 这可以帮助後面的工具避掉很多问题 03/26 12:05
18F:推 JerroLi: 推楼上;另外这本书应该有 20 年了?建议换一本新一点的 03/26 15:45
19F:推 r901042004: 以verilog来说 03/26 17:59
20F:→ r901042004: 只要记等号左边用在assign要宣告成wire 03/26 17:59
21F:→ r901042004: 用在always要宣告成reg,跟是不是flip flop无关 03/26 17:59
22F:→ r901042004: 如果是用systemverilog 03/26 18:01
23F:→ r901042004: 所有都宣告成logic,使用的话就照m大所说的 03/26 18:01
24F:推 Battie: reg也可以是combinational logic,如果没用posedge or nege 03/26 20:59
25F:→ Battie: dge 03/26 20:59
26F:推 Battie: 说实话,我从没用过deassign 03/26 21:05
27F:推 HenryLin123: 我觉得现在这样写会报错,因为你有两处q在左边。 03/26 21:12
这样这本书的写法感觉不太ok的意思吗
28F:推 HenryLin123: always里面也有可能是wire,不然一堆combination你每 03/26 21:16
29F:→ HenryLin123: 个都写一次assign? 03/26 21:16
30F:推 mmonkeyboyy: 里面就blocking assignment就好了啊= =" 03/26 21:37
31F:→ mmonkeyboyy: 说到logic 对port 要小心一点用就是了 03/26 21:38
32F:推 letitgo02: 这本书不要在看了,会害你 03/27 11:21
33F:推 bookstar07: 这coding有点恐怖= = 03/28 01:48
好 谢谢 这本书其实错蛮多的 但我刚学几个礼拜而已 想说就先看个语法这样
34F:→ bookstar07: 换本新书看吧 03/28 01:48
35F:→ bookstar07: 不然你迟早害死自己 … 03/28 01:49
36F:推 g1990822: 宣告成reg不一定是register,reg也可以用来描述组合电路. 03/28 16:24
37F:推 StrKO: Assign都用在wire吧... 03/29 19:11
38F:→ StrKO: 不会用在always block里面 03/29 19:11
39F:→ eroha90021: 谢谢大家的回覆 我都有看过了 谢谢 03/30 19:21
※ 编辑: eroha90021 (223.138.126.0 台湾), 03/30/2021 19:24:21
※ 编辑: eroha90021 (223.138.126.0 台湾), 03/30/2021 19:29:38