Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Types VHDL嵌套转换_Types_Nested_Vhdl_Absolute_Timing - Fatal编程技术网

Types VHDL嵌套转换

Types VHDL嵌套转换,types,nested,vhdl,absolute,timing,Types,Nested,Vhdl,Absolute,Timing,这个问题的起源是“VHDL中的转换函数是什么?”这个问题适用于我的应用程序:如果我使用嵌套转换会发生什么?更具体地说,转换函数是否真的创建了一个组合机器,或者它只是对合成器/实现者的澄清。因此,如果我使用嵌套转换,比如对绝对函数使用嵌套转换,会导致任何计时问题。(为简单起见,假设a&b有符号位的空间,并且不会溢出) 信号a:标准逻辑向量(某物); 信号b:标准逻辑向量(某物); 信号c:标准逻辑向量(某物); c您可以使用ieee.numeric\u std软件包 转换函数不需要任何成本,也不

这个问题的起源是“VHDL中的转换函数是什么?”这个问题适用于我的应用程序:如果我使用嵌套转换会发生什么?更具体地说,转换函数是否真的创建了一个组合机器,或者它只是对合成器/实现者的澄清。因此,如果我使用嵌套转换,比如对绝对函数使用嵌套转换,会导致任何计时问题。(为简单起见,假设a&b有符号位的空间,并且不会溢出)

信号a:标准逻辑向量(某物);
信号b:标准逻辑向量(某物);
信号c:标准逻辑向量(某物);

c您可以使用ieee.numeric\u std软件包


转换函数不需要任何成本,也不生成任何逻辑

它们纯粹是对(a)编译器,(b)实现者和最重要的(c)维护者的澄清,后者必须弄清楚您以后做了什么

所以给出了VHDL代码

signal a: std_logic_vector(something); 
signal b: std_logic_vector(something);
signal c: std_logic_vector(something);
c <= std_logic_vector(abs(signed(a)-signed(b)));
思考设计;如果类型正确,您可能会发现90%的类型转换消失

哦,我还推荐
numeric\u std
而不是非标准的替代品

signal a: std_logic_vector(something); 
signal b: std_logic_vector(something);
signal c: std_logic_vector(something);
c <= std_logic_vector(abs(signed(a)-signed(b)));
signal a: signed(something); 
signal b: signed(something);
signal c: signed(something);
c <= abs(a - b);