chenbingjy 发表于 2023-4-15 17:34

用Verilog如何给数组赋值

<p>我这样写的<br />
reg mema = {8&#39;h55,8&#39;haa,8&#39;h5a,8&#39;ha5};<br />
可是编译出错:</p>

<p></p>

<p>请问高手,怎么解决呀?谢谢!</p>

Jacktang 发表于 2023-4-16 09:33

<p>编译出错</p>

<p>&nbsp;或是mema 本身有问题</p>

<p>或是因为对解包数组的赋值必须是聚合表达式的式有问题</p>

<p>仅供参考</p>

led2015 发表于 2023-4-16 22:34

<p>可能是因为 Verilog 中的数组初始化必须在 module 语句之外进行</p>

chenbingjy 发表于 2023-4-17 09:20

<p>还是没搞定</p>

苦茶子 发表于 2023-4-17 10:36

声明的时候不能直接赋值的,即使可以编译的时候也会忽略。解决办法是在always块内用for循环赋值。

chenbingjy 发表于 2023-4-18 10:22

苦茶子 发表于 2023-4-17 10:36
声明的时候不能直接赋值的,即使可以编译的时候也会忽略。解决办法是在always块内用for循环赋值。

<p>for循环赋值不好吧。如果数据没有规律,不好实现</p>

苦茶子 发表于 2023-4-20 09:27

<p>那只能一个一个赋值,或者你用rom</p>

chenbingjy 发表于 2023-4-20 10:32

苦茶子 发表于 2023-4-20 09:27
那只能一个一个赋值,或者你用rom

<p>谢谢</p>

浪里涛涛 发表于 2023-9-15 14:43

<p>mema =8&#39;h55;</p>

<p>mema =8&#39;ha5;</p>

<p>mema =8&#39;haa;</p>

<p>mema =8&#39;h55;</p>

<p>应该这样幅值吧</p>

chenbingjy 发表于 2023-11-2 09:23

浪里涛涛 发表于 2023-9-15 14:43
mema =8&#39;h55;

mema =8&#39;ha5;

mema =8&#39;haa;

mema =8&#39;h55;

应该这样 ...

<p>谢谢!我试试</p>

竹林春晚 发表于 2023-12-6 13:56

本帖最后由 竹林春晚 于 2023-12-6 13:58 编辑

<p>&nbsp;&nbsp; &nbsp; reg mem ;<br />
&nbsp;&nbsp; &nbsp; initial<br />
&nbsp;&nbsp; &nbsp; begin<br />
&nbsp; &nbsp; $readmemh(&quot;sine_256.txt&quot;,mem); &nbsp; //txt添加到工程目录下,直接赋值就可以。h为16进制,b为二进制<br />
&nbsp;&nbsp; &nbsp; end&nbsp;&nbsp; &nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如上,多少数据都可以,数据有规律无规律只在txt文件中处理就行。</p>
页: [1]
查看完整版本: 用Verilog如何给数组赋值