作者jb679123 (straw man)
看板Electronics
标题[问题] verilog bus signal
时间Tue May 26 20:10:05 2015
各位先进好
请教一下一个verilog问题
以下是我的部分程式码:
always@(posedge CLK)
begin
if(RST)
b <= 1'b0;
else if(in_data[left:right] == 4'd7)
b <= 1'b1;
end
in_data是个10bit暂存器 left和right每个clk会改变数值
这写法在模拟时就会出错
我的猜测是参数化的写法在bus信号不能被接受
不知道这想法是否有错?
还是有其他写法可以支援
希望大家不吝指教
谢谢
--
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.123.103.109
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1432642208.A.1E0.html
※ 编辑: jb679123 (140.123.103.109), 05/26/2015 20:27:59
1F:→ TripleC: 把所有状况写出来. 会改变数值应该连compile都不会过 05/26 23:21
2F:→ TripleC: 喔 我看错了 变数是在if statement里面 05/26 23:22
T大有什麽看法吗?
※ 编辑: jb679123 (140.123.103.109), 05/26/2015 23:26:14
3F:推 kyo547896321: 看看想抓出来看的那些bit的位置有没有规律或是 05/26 23:44
4F:→ kyo547896321: 固定会发生的某些case,再用判断式写在组合逻辑里吧 05/26 23:45
5F:→ kyo547896321: 而且有4个连续的bit,在10bit里也只有7种case 05/26 23:47
6F:推 kyo547896321: [9:6][8:5][7:4][6:3][5:2][4:1][3:0]全列出来 05/26 23:50
7F:→ kyo547896321: 另外不建议把判断的逻辑放在flip-flop里面 05/26 23:51
8F:→ kyo547896321: 有时候debug会很乱,或是容易出现multiple driver 05/26 23:52
9F:推 kyo547896321: 一点小建议,其他留待版上大大补充 05/26 23:55
感谢K的说明,上叙的部分我都有考虑过,因为抓的信号长度会依某些条件改变
(left right的变量不相同),所以可能没办法全部列出
另外K大提到的"不建议把判断的逻辑放在flip-flop"
不太清楚您的意思是.....说在always block中若是以clk正负源触发信号的话
里面不要写判断式的意思?
※ 编辑: jb679123 (140.123.103.109), 05/27/2015 00:43:45
10F:→ kyo547896321: 如果长度会改变,那应该就不能只用4'd7来判断吧 05/27 00:59
11F:→ kyo547896321: 或是其他地方还有判断式我不晓得,如果left right 05/27 01:00
12F:→ kyo547896321: 变化不会太多情况,还是一个个列举吧 05/27 01:02
13F:推 kyo547896321: 另外我说的判断式,指得是在没有reset下 05/27 01:04
14F:→ kyo547896321: flip-flop把资料推出去的情况,个人是都习惯把 05/27 01:06
15F:→ kyo547896321: 里面写成b<=b_next,把b_next用组合逻辑来判断 05/27 01:07
16F:→ kyo547896321: 太多if else或case在flip-flop里面就感觉很乱XD 05/27 01:08
17F:→ kyo547896321: 一点coding style的不同而已啦 05/27 01:09
18F:推 Leadgen: 如果你都没辨法全列出,Compiler也没辨法全列出呀~ 05/27 08:43
感谢两位的建议,上面程式码是个示意部分,原本只想列出bus出问题的部分 sor
如果要列出所有情况是可以的,但因为情况还不少且我有想到一个公式去计算left right
就可以省去逐条列出的方式,所以才会想用参数方式来写
btw:逐条列出跟参数方式的写法,合出来的效果(area)哪一种会比较好?
※ 编辑: jb679123 (140.123.103.109), 05/27/2015 13:57:04
19F:推 n052111089: Generate 05/27 17:31
20F:推 mmonkeyboyy: compiler错误啊 这情况在於那个是signal 05/29 12:47
21F:→ mmonkeyboyy: 那必需是要有实际连线的 05/29 12:47
22F:→ mmonkeyboyy: 虽然还是老话一句 请不要拿写高阶语言想法来写 05/29 12:48
23F:→ mmonkeyboyy: 写法应该是你要写个状态机 rst 检查 移位 05/29 12:49
24F:→ mmonkeyboyy: 你可以select 把几种组合都写进去变成comb罗辑 05/29 12:51