我只能给你解释一下,在你的程序中你首先定义了一个实体top,他拥有一个
32mhz的时钟输入口,一个单输入口handletoauto,一个7位向量输出口code1,以
及8位的向量输入口index1,单输出口high1和spkout,这些都是的卢的外部端口
。而后又定义了top的结构体behavior,他是反应top的内部结构的,在这其中又
调用了automusic组件,他是你在后面定义的一个实体,后面的component tone,
component speaker,也是和 automusic一样,signal tone2是一个整形信号变量
它的范围是从0到2047,接下来u0是将automusic组件的各个端口信号从左到右进
行一次映像,即将automusic的各端口值传送给top的外端口clk32MHZ,index1,
indx,handtoauto,u1,u2也是同样的意思。而在下面你就是定义了一个tone实
体,就是你上面调用的tone组件的实体,对应的端口定义就不解释了,我直接给
你分析process进程吧:它相当于一个无限循环,每次循环事都探测index信号,
当index取when后面的条件值时,那么tone0,code,high获得相应的赋值,当
index取值不是when后面的值时,那么执行when others。其实这很简单的,你仔细揣摩很容易。
SIGNAL write_addr : STD_LOGIC_VECTOR(5 DOWNTO 0)声明了一组信号,信号名称write_addr,信号类型STD_LOGIC_VECTOR,这个信号的类型是个std_logic数组,它的下标变化范围是(5 DOWNTO 0),也就是说,有6位std_logic类型构成的数组。
说的白一些,就是信号(写地址)write_addr有6根地址线,名称是write_addr(5)~write_addr(0)。
信号read_addr也类似。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)