作者bamboopole (ㄈㄓ肥竹)
看板Electronics
标题[问题] Verilog 二维阵列问题
时间Wed Jun 16 22:48:51 2021
我想请问一下
我建立了一个二维阵列
reg [7:0] Matrix [0:129][0:129];
利用两个for loop来进行初始化(全部给0)
我发现在Matrix[0][1] 的位置都没有讯号,但附近的位置是有值的
想请问一下我是哪里错惹
我的Code的初始化,还有display出来的部分
https://i.imgur.com/Vgdc4sH.jpg
这是display出来的结果
https://i.imgur.com/vcV5uhm.jpg
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 58.115.170.41 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Electronics/M.1623854933.A.B83.html
1F:推 hsucheng: for loop是复制电路,不是真的回圈,把[0][1] 06/17 00:37
2F:→ hsucheng: 那行拿掉试试 06/17 00:38
3F:→ bamboopole: Matrix[0][1] <=8'd0; 06/17 01:11
4F:→ bamboopole: 这行砍掉也没用 06/17 01:11
5F:→ bamboopole: 我本来是没写这行的 06/17 01:11
6F:→ bamboopole: 是发现这个位置有问题才加上去试试看会不会有用 06/17 01:11
7F:→ bamboopole: 结果没用QQ 06/17 01:11
8F:→ a86692472: highlight 一下 Matrix 找找是否double 到? 06/17 01:20
9F:→ bamboopole: 抱歉,我是初学者,看不太懂这句话QQ 06/17 01:32
10F:→ bamboopole: 不知道能不能讲的具体一点 06/17 01:32
11F:→ bamboopole: 我这个是用vscode写,然後用modelsim跑模拟 06/17 01:32
12F:推 mmonkeyboyy: .......。。 你复制了一堆matrix 06/17 02:31
13F:推 tkhan: C code 06/17 10:43
14F:推 hsucheng: 你的matrix某些bit被multi drive了吧 06/17 10:50
Matrix[0][1] <= 8'd0;是发现它没有值才加上去的
15F:→ a86692472: BTW 你的 iData 都给什麽 会不会就给 Matrix[0][1] z 06/17 11:38
这个位置应该是只会初始为0,值应该不会再做修改,我在检查一下我的波形图,看看有没有被input z
※ 编辑: bamboopole (58.115.170.41 台湾), 06/17/2021 12:15:17
16F:→ bamboopole: 感谢各位的帮助,如a8大所说 06/17 13:17
17F:→ bamboopole: 我不小心在中间input了一个z给它 06/17 13:17
18F:推 cyl61123: C-style Verilog Programming? 06/17 20:55
我只知道这样写QQ 不然还有什麽更好的写法吗?
19F:推 HenryLin123: 很久没看到asynchronous reset还有non blocking 满满 06/17 21:17
20F:→ HenryLin123: 一串code了 06/17 21:17
※ 编辑: bamboopole (180.217.194.17 台湾), 06/18/2021 01:20:58
21F:推 mmonkeyboyy: 你有心想写的话网上有不少教你该怎样正确写的 06/18 07:45
22F:→ mmonkeyboyy: 这个写法下去跑synthesis 直接挂点@_@~ 06/18 07:46
23F:→ mmonkeyboyy: 如果只是修课想过就随便了啦 06/18 07:47
synthesis真的挂了,位置不够,重写了一个QQ
24F:推 hsucheng: 对呀,你有看过合成完cell数量吗XD 06/18 20:29
爆了xD
25F:推 tkhan: 画一下硬体架构图吧 06/19 08:08
26F:推 ayn775437403: 修课过的话随便写没差,但以後要走这行的话建议还是 06/19 21:22
27F:→ ayn775437403: 不要这样写,先有硬体架构再来写code比较好 06/19 21:22
我有先稍微规划一下架构,本来我是分别制作好几个模组接在一起,然後用FSM决定在每个state要做什麽,结果模拟时位置不够,上面那张截图是其中一个模组
※ 编辑: bamboopole (180.217.79.245 台湾), 06/20/2021 20:18:09
※ 编辑: bamboopole (180.217.79.245 台湾), 06/20/2021 20:18:27
※ 编辑: bamboopole (180.217.79.245 台湾), 06/20/2021 20:23:04
28F:推 mmonkeyboyy: 概念上是这样的 你先分好模组 在模组中你再找出 06/21 12:18
29F:→ mmonkeyboyy: 该有的FSM 把该FSM再分成时间 output 状态等部份 06/21 12:19
30F:→ mmonkeyboyy: 这样写下去 你再把模组组合在一起 通常会比较不容 06/21 12:20
31F:→ mmonkeyboyy: 易出错 一般当代的的HDL能写MOORE就多写 所以别的 06/21 12:20
32F:→ mmonkeyboyy: 能不用会少用也是好事 06/21 12:21
33F:→ mmonkeyboyy: 如果你有复数的FSM要整合 记得先把信号分群 再整合 06/21 12:22
34F:→ mmonkeyboyy: 虽然程式看起来会异常的大 但你的synthesis出来会 06/21 12:23
35F:→ mmonkeyboyy: 不难看的 反倒是你都混在一起写的方式 看似简单但 06/21 12:23
36F:→ mmonkeyboyy: 只是把工作都丢给DC等 搞死自己搞死大家而已 06/21 12:24
37F:→ mmonkeyboyy: 至於什麽要重新rst给值的方法 你最好上网看一下 06/21 12:25
38F:→ mmonkeyboyy: 你现在这方法真的是当C写 .... 这不是很正确的 06/21 12:25
39F:推 hsucheng: matrix可能要改用BRAM做 06/21 12:44
感谢各位大大的分享,我会再研究看看的~
※ 编辑: bamboopole (58.115.170.41 台湾), 06/24/2021 22:17:20