微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > vhdl中 2维数组怎么定义?

vhdl中 2维数组怎么定义?

时间:10-02 整理:3721RD 点击:
请教一下高人!
多谢!

vhdl中 2维数组怎么定义?
subtype word is std_logic_vector(31 downto 0);
type regs is array (integer range 0 to 255) of word;
signal reg_asics :regs;

vhdl中 2维数组怎么定义?
调用的时候怎么作呢?
比如调用:reg_asics [9,5]这个元素?

vhdl中 2维数组怎么定义?
asic_data <= reg_asics(adr_in);
adr_in 是integer。
asic_data(x)就是你要的。
BTW,最好不要综合这些语句,只用于仿真的时候。

vhdl中 2维数组怎么定义?
那么用到多个相同的寄存器时,怎样定义才是最好的!用数组时耗费的资源太大

vhdl中 2维数组怎么定义?
直接调用fpga本身的block ram。

vhdl中 2维数组怎么定义?
其实VHDL的2维数组是它区别于verilog的一个大优点,在进行port定义和内部变量定义时可以使你的设计简洁而有意义;而verilog只在定义memory时才用到2维,而且还不能进行bit操作;所以OVI在verilog的最新的版本中,将加入多维功能,以满足设计的需要和方便。
当然,如果一个有2维数组的VHDL设计在向verilog转换时会很麻烦!

vhdl中 2维数组怎么定义?
高论,以前没有注意到这一点上两种的区别。

vhdl中 2维数组怎么定义?
按照bravelu 的说法,是不是把多个相同的寄存器当做RAM来用啊,但是这样速度是不变慢了!每操作一下都要读写RAM一次!

vhdl中 2维数组怎么定义?
确实存在这个问题,不过一般的应用这种方法还是能满足的,看你自己权衡了,大的寄存器阵列比较耗资源。

  直接调用fpga本身的block ram。  

能帮我举个例子吗?
我用的是vhdl,但我不会调用!

vhdl中 2维数组怎么定义?
去什么地方找这些调用模块的介绍?

vhdl中 2维数组怎么定义?
看一下Xilinx器件的User Guide,一般都会给出VHDL和Verilog两种语言的调用例子.

vhdl中 2维数组怎么定义?
如果确实需要做这么一个寄存器应该怎么样处理啊?

强烈支持小编

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top