2987|7

76

帖子

0

TA的资源

一粒金砂(初级)

vhdl代码问题~ [复制链接]

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY SHIFT8 IS
        PORT
        (
                DI,CLK                : IN        STD_LOGIC;
                DOUT                : OUT        STD_LOGIC_VECTOR(7 DOWNTO 0)
        );
END SHIFT8;

ARCHITECTURE a OF SHIFT8 IS
        SIGNAL TEMP : STD_LOGIC_VECTOR(7 DOWNTO 0):="11111111";
BEGIN
        PROCESS(CLK)
        BEGIN
          IF CLK'EVENT AND CLK='1' THEN
             TEMP(7)<=DI;  
             FOR I IN 1 TO 7 LOOP
                 TEMP(7-I)<=TEMP(8-I);
             END LOOP;
          END IF;
        END PROCESS;
        DOUT<=TEMP;
END a;

DI->TEMP(7),当前的TEMP7,已经是DI了,然后在循环,7->6,6->5,......,1-0 ,这不就等于将TEMP(7)->TEMP(0)了么?
TEMP(7)->TEMP(6) TEMP(6)->TEMP(5)
这种循环方式6在给5的时候,自己原本的值不是已经被覆盖了么?
我认为应该写成
             FOR I IN 7 DOWNTO 1 LOOP
                 TEMP(7-I)<=TEMP(8-I);
             END LOOP;
                 TEMP(7)<=DI;  
可是仿真的结果都是一样的,这是因为什么?

最新回复

for之内的就是一个一个的顺序赋值,但是for之外的,是结束后赋值。  详情 回复 发表于 2008-8-8 15:06

回复

70

帖子

0

TA的资源

一粒金砂(初级)

VHDL是硬件描述语言,你代码中的Loop和软件里的For循环不是一个概念。不应该以软件的思路来理解VHDL代码。
你所写的代码描述的是一个移位寄存器的电路,在时钟的上升沿,数据从高位向低位移动,不存在谁先移谁后移的问题,所有的数据位都是在同一个节拍向同一个方向移动。
你可以比较一下这两种写法综合后的结果,就是看RTL的图,结果应该是一样的。

回复

81

帖子

0

TA的资源

一粒金砂(初级)

谢谢你帮我解答,但是你的回答让我很困惑,本身VHDL的目的就是用软件来描述硬件,它很大的优点就在于工程师不用象做ASIC那样了解硬件,如果说用软件描述的思路有问题,那么这样做就显得多余了,书上讲的语法和实际使用当中存在出入,这个我只能认为存在不严谨的问题,或者说我对语法的理解有问题,但是我觉得是理解的问题,所以我想来寻求理解,我也很奇怪为什么会这样,如果象你说的,那这个程序我觉得就难写了.

回复

95

帖子

0

TA的资源

一粒金砂(初级)

硬件描述语言本来和实际的软件开发语言就有很大差别,理念直接就不一样了。

虽然硬件是并行产生,但是在VHDL/Verilog HDL语言里,只要进入了IF THEN/if else这样的判断序列,所产生的逻辑就是“顺序”逻辑了,和普通编程语言一样。这是硬件语言里面的特殊存在。

你需要关注的是"<="这个赋值符号,这个和"="不同。

回复

68

帖子

0

TA的资源

一粒金砂(初级)

你说的我有点明白了,但是对于FOR语句的语法解释和这个一联系我就有些困惑.
能不能再说得详细一点,太感谢了你~

回复

83

帖子

0

TA的资源

一粒金砂(初级)

FOR语句跟通常编程语言的含义是一样的。

主要差别在"<=",这是“事后赋值”,就是当本次的CLK PROCESS完全结束后,才进行赋值。

回复

68

帖子

0

TA的资源

一粒金砂(初级)

意思是将所有的FOR都同时进行了,然后赋值么
你的意思是FOR循环的内部的移位是同时进行的么
而不是象我说的
7先赋6,6再赋5这样
而是

7->6的同时,原来的6->5

回复

71

帖子

0

TA的资源

一粒金砂(初级)

for之内的就是一个一个的顺序赋值,但是for之外的,是结束后赋值。

回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/5 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表