VHDL中的问题

variable data_out : integer range 0 to N;
data_out_vec : out std_logic_vector(log2(N) downto 0)
.....
.....
data_out_vec <= std_logic_vector(to_unsigned(data_out,log2(N)+1));
最后那句话是在做类型转换吗?还有就是to_unsigned是在干嘛?假设N是128

VHDL是强类型语言 不同类型的变量不能相互赋值
常用的类型是std_logic_vector、unsigned、signed和integer
如果仅使用IEEE标准库的话(最常用的std_logic_1164和numeric_std)
std_logic_vector和unsigned及signed可以简单转换如:
a_std <= std_logic_vector(a_uns);
a_uns <= unsigned(a_std);
a_sig <= signed(a_std);
而std_logic_vector和integer需要通过signed或unsigned进行间接转换
如a_std <= std_logic_vector(to_unsigned(a_int, width));
其中to_unsigned是numeric_std标准库中的一个类型转换函数 后面的参数width是目标变量的位宽 即赋值等式左边的a_std的位宽
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-11-08
你的理解就是正确的,类型转换!把类型转换成unsigned,前面得加use ieee.std.1164_unsigned.all;

参考资料:http://www.velocityreviews.com/forums/t618678-to_stdlogicvector-and-to_unsigned.html

本回答被网友采纳
第2个回答  2010-11-22
应该是不行的,他们的语言代码和内部包含文件有所不同。 我觉得你可以把Verilog语言和vhdl写的分别生成各自的元器件,这两个器件的连接混用应该是可以的。

VHDL代码出现near text "=>"; expecting ")", or ","错误,调用了库文件...
VHDL编程中遇到"near text "=>"; expecting ")", or ","错误,通常源于类型兼容性问题。对于bit类型,可以直接使用连接运算符,但std_logic类型则需要通过中间信号转换。例如,可以先创建一个中间信号t,如t := 0 && temp_node2(2) && temp_node2(1) && 0,然后在元件实例化中将Ain关联到这...

vhdl语法问题
第一,s:=conv_interger(s_vec);是将矢量转为整数的函数,这个是怎么个转发啊?比如s_vec="011",转的整数是其十进制数吗? -- 对, s_vec="011"转的整数就是3. 第二,din'left表示取左边界,比如din="1100",这个左边界取的值是1么? -- 不对. 左边界是指矢量的边界, 例如 consta...

求懂的朋友帮个忙,VHDL程序出错,不知道怎么解决
VHDL程序出错时,可以按照以下步骤来定位和解决问题:1. 检查错误类型:首先要明确错误的具体类型,比如是类型不匹配错误、语法错误还是实体或架构错误。错误信息通常会提示出现问题的行数和具体原因。2. 确认错误来源:根据错误类型,确认错误来源是否是信号和变量的类型不匹配、代码语法错误、实体或架构声明...

VHDL语句中,出现的问题如下,求各位高手解决。
你在进程语句process中选择了可选项敏感信号表(clkin),同时在进程体中又使用了wait语句,这是不被VHDL语法所允许的。进程语句process中的可选项敏感信号表,其作用相当于一个隐含的wait语句。敏感信号表和wait语句,二者只能选其一!你将process(clkin)改为process就行了。

VHDL编译出现如下的问题怎么解决
Warning (13410): Pin "q[2]" is stuck at GND Warning (13410): Pin "q[1]" is stuck at GND 这个的意思是您的这几个输出管脚直接接地了(意思是它们的值一直都是0)。当然如果这符合您的设计要求这种警告可以不管。Warning: Following 3 pins have nothing, GND, or VCC driving datain ...

VHDL里 二维数组的赋值问题
其次,你的定义是相互矛盾的,本身就有问题。你想:端口b是一个标准逻辑位矢量的类型,把它赋给一个二维数组w(x,y)类型,本身就违反了同型赋值的规则,是不可能实现的;正确的做法应该是:定义 type logicvector2 is array (natural range<>) of std_logic_vector(0 to 31);signal w: logic...

初学者问一个VHDL时序仿真的问题
1.VHDL描述有误,按照教材的意思,正确的VHDL描述应当是:X1 <= NOT A AFTER 3ns;X2 <= NOT (X1 AND B) AFTER 5ns;X3 <= NOT (A AND C) AFTER 5ns;F1 <= NOT (X2 AND X3) AFTER 5ns;F2 <= NOT (X2 OR C) AFTER 6ns;2.教材上的时序分析是正确的,只是F1的波形不正确,...

VHDL语言问题!提示end if 错误!!急...
你对buffer端口的理解不足。buffer和in、out一样是一种端口类型,而不是数据类型。buffer端口的特点是输出且允许回读。你定义b的时候写的是out buffer,这是不对的,正确的定义语句为:b : buffer std_logic;另外,结构体(architecture)也有begin和end的,你的程序还少了个begin ——Medied.Lee ...

用VHDL编程时总是出现这样的错误
以上是属于多时钟问题!在设计时往往会遇到这种情况,需要对外部某个输入信号进行判断,当其出现上跳或下跳沿时,执行相应的操作,而该信号不像正常时钟那样具有固定占空比和周期,而是很随机,需要程序设计判断其上跳沿出现与否。就会写出如上程序!解决的办法可以如下,将clk1和key2 增加一级状态 lcx ...

有关vhdl问题
1.学习VHDL,如果有类似软件的基础(比如倒腾了几年C++什么的),加上对于软件天生的敏感力,一天之内通过实例演练基本可以掌握语法、纠错、优化等各种技能。2.如果大神脑子里本来就储备了足够的计算机结构、计逻、数逻……凡此种种杂七杂八惊天地泣鬼神人见人掉肉鬼见鬼掉渣的知识,(即对于CPU构造...

相似回答
大家正在搜