打印

VHDL中如何实现这样的操作 请进入 谢谢

[复制链接]
2216|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
x_tin|  楼主 | 2011-11-15 16:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 x_tin 于 2011-11-15 16:19 编辑

SIGNAL a:  STD_LOGIC_VECTOR(127 DOWNTO 0);  --
SIGNAL b:  STD_LOGIC_VECTOR(127 DOWNTO 0);  --
SIGNAL c:  STD_LOGIC_VECTOR(127 DOWNTO 0);  --
SIGNAL d:  STD_LOGIC_VECTOR(6   DOWNTO 0);  --

想要实现如下:

c(127 DOWNTO 0) <= a(vBuf DOWNTO 0) &  b(127 DOWNTO (1 + vBuf));

其中,  vBuf是可变的,   vBuf:=conv_integer(d(6 DOWNTO 0));

感谢。

现在这样写 可以前仿真,但是实际工作不行。

相关帖子

沙发
AutoESL| | 2011-11-15 16:26 | 只看该作者
可以自己实现,用一组case语句

使用特权

评论回复
板凳
AutoESL| | 2011-11-15 16:27 | 只看该作者
switch(vBuf)
  case 0:  c(127 DOWNTO 0) <= a(0 DOWNTO 0) &  b(127 DOWNTO (1 + 0));
  case 1:  c(127 DOWNTO 0) <= a(1 DOWNTO 0) &  b(127 DOWNTO (1 + 1));
....
.....

使用特权

评论回复
地板
GoldSunMonkey| | 2011-11-15 17:19 | 只看该作者
switch(vBuf)
  case 0:  c(127 DOWNTO 0)
AutoESL 发表于 2011-11-15 16:27

这样CASE语句太多了。

使用特权

评论回复
5
GoldSunMonkey| | 2011-11-15 17:20 | 只看该作者
SIGNAL a:  STD_LOGIC_VECTOR(127 DOWNTO 0);  --
SIGNAL b:  STD_LOGIC_VECTOR(127 DOWNTO 0);  --
SIGNAL c:  STD_LOGIC_VECTOR(127 DOWNTO 0);  --
SIGNAL d:  STD_LOGIC_VECTOR(6   DOWNTO 0);  --

想要实现如 ...
x_tin 发表于 2011-11-15 16:18

贴实际波形

使用特权

评论回复
6
x_tin|  楼主 | 2011-11-15 17:34 | 只看该作者
谢谢 AutoESL 语句确实有点多。
下面是 图示

dd.GIF (3.21 KB )

dd.GIF

使用特权

评论回复
7
x_tin|  楼主 | 2011-11-16 08:13 | 只看该作者
顶起来。

使用特权

评论回复
8
AutoESL| | 2011-11-16 10:20 | 只看该作者
这样CASE语句太多了。
GoldSunMonkey 发表于 2011-11-15 17:19

我觉得底层电路就应该是这样的
就算你写成变量的这种形式,XST/Synplify综合之后还是会弄成这样子吧

使用特权

评论回复
9
AutoESL| | 2011-11-16 10:22 | 只看该作者
你们觉得他想要的功能应该对应成什么样的硬件结构呢?

使用特权

评论回复
10
AutoESL| | 2011-11-16 10:22 | 只看该作者
谢谢 AutoESL 语句确实有点多。
下面是 图示
x_tin 发表于 2011-11-15 17:34

用桶式移位器吧

使用特权

评论回复
11
westmas| | 2011-11-16 10:55 | 只看该作者
我觉得用移位要好些,

使用特权

评论回复
12
x_tin|  楼主 | 2011-11-16 11:56 | 只看该作者
谢谢,就是这个桶式移位器的功能。
现在用CASE语句 封装成一个FUNCTION ,然后调用的。回头试试这个桶式移位器的写发 看编译后结果如何。
非常感谢。

使用特权

评论回复
13
x_tin|  楼主 | 2011-11-16 11:58 | 只看该作者
我觉得底层电路就应该是这样的
就算你写成变量的这种形式,XST/Synplify综合之后还是会弄成这样子吧
AutoESL 发表于 2011-11-16 10:20

我也觉得底层电路应该就是这种结构,就是想找个方便的写法 呵呵。

使用特权

评论回复
14
AutoESL| | 2011-11-16 16:11 | 只看该作者
我也觉得底层电路应该就是这种结构,就是想找个方便的写法 呵呵。
x_tin 发表于 2011-11-16 11:58

方便的写法就看综合工具的支持程度了
最方便的写法就是用变量做下标去取相应的位,也就是你发帖里面那样写
不知道ISE支不支持这样的

使用特权

评论回复
15
AutoESL| | 2011-11-16 16:12 | 只看该作者
另外就是用移位,移位的位数还是这个变量,不知道ISE支不支持

使用特权

评论回复
16
x_tin|  楼主 | 2011-11-16 16:21 | 只看该作者
谢谢你,第一种方法 前仿真可以 ,可以综合,但是他就不检查位数是否对了,可能是因为有变量的原因,而且运行结果也是不对的。所以从这个看ISE是不支持的。后一种没试 。  现在就用你一开始说的方法,用CASE,然后放在另外一个VHD文件中,还有就是你说的桶式移位器也行,然后是从网上搜了 有用FOR实现的。回头有时间试试。

使用特权

评论回复
17
GoldSunMonkey| | 2011-11-16 22:29 | 只看该作者
嗯,可能桶形移位器是最好的方案。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

153

帖子

0

粉丝