我正在尝试编写一个代码来检测din信号的上升沿,并在此发生后将dout提高5个时钟周期.我在编译时继续遇到不同的错误,我不确定它们是什么意思.我认为我对VHDL中的一些概念缺乏基本的了解,但遗憾的是在线查看并没有帮助我.我仍然不知道软件可以接受哪些操作.
在我的代码中,我目前在第一个进程中有一个上升沿检测器,它将dout提升到逻辑高.第二个过程检查dout是否为高电平,同时从5开始向下计数0,从0开始向下计数从逻辑低电平开始.
这不会编译并返回以下错误:
错误(10028):无法解析net_ext.vhd(31)中net"count [2]"的多个常量驱动程序
错误(10029):在rise_ext.vhd上的常量驱动程序(17)
错误(10028):无法解析网络"count [1]"的多个常量驱动程序在rise_ext.vhd(31)
错误(10028):无法在rise_ext.vhd(31)解析net"count [0]"的多个常量驱动程序
错误(10028):无法在rise_ext.vhd解析net"dout"的多个常量驱动程序(31)
错误(10029):在rise_ext.vhd上的常量驱动程序(19)
错误(12153):无法详细说明顶级用户层次结构
错误:Quartus II 32位分析和综合不成功.7个错误,2个警告错误:峰值虚拟内存:326兆字节错误:处理已结束:2014年1月11日星期六13:13:38错误:已用时间:00:00:04错误:总CPU时间(在所有处理器上):00: 00:02
错误(293001):Quartus II完全编译失败.9个错误,2个警告
entity rise_ext is
port ( clk: in bit ;
resetN: in bit ;
din: in bit ;
count: buffer integer range 0 to 6 ;
dout: buffer bit ) ;
end rise_ext ;
architecture arc_rise_ext of rise_ext is
signal s1 , s2 : bit ;
begin
process ( resetN, clk )
begin
if resetN = '0' then
dout <= '0' ; …
Run Code Online (Sandbox Code Playgroud) 该算法众所周知,您进行 8 次左移,并在每次移位后检查个位、数十位或数百位(每个 4 位)。如果它们超过 4 个,则将 3 个添加到该组中,依此类推...
这是一个基于流程的解决方案,但不起作用。它会编译,但输出不是我想要的。有什么想法可能是什么问题吗?
library ieee ;
use ieee.std_logic_1164.all ;
use ieee.std_logic_unsigned.all ;
entity hex2bcd is
port ( hex_in : in std_logic_vector (7 downto 0) ;
bcd_hun : out std_logic_vector (3 downto 0) ;
bcd_ten : out std_logic_vector (3 downto 0) ;
bcd_uni : out std_logic_vector (3 downto 0) ) ;
end hex2bcd ;
architecture arc_hex2bcd of hex2bcd is
begin
process ( hex_in )
variable hex_src : std_logic_vector (7 downto 0) ;
variable bcd …
Run Code Online (Sandbox Code Playgroud) 刚开始使用C ++(几天后),我就有C背景。
我有一个类,主要包含一个指向带有以下代码的int数组的指针:
class Array
{
private:
int * _arr;
int _size;
public:
Array();
Array(int size);
Array(const Array& obj); // copy constructor
~Array();
void readInValues();
void mult(int num);
void add(int num);
void printArray();
};
Run Code Online (Sandbox Code Playgroud)
_arr是指向int数组的指针,当使用复制构造函数创建新实例时,我会在堆上创建一个新的int数组(我认为)。在复制构造函数中:
Array::Array( const Array & obj )
{
_arr = new int[_size];
for(int i=0;i<_size;i++)
*_arr[i] = *obj._arr[i];
}
Run Code Online (Sandbox Code Playgroud)
我要做的第一件事是为新数组分配内存(_size是原始类型,因此据我所知会自动复制)。我想做的下一件事是使用循环复制数组本身。该部分无法通过编译说非法间接。我不确定为什么...