VHDL FOR LOOP 应用问题

[复制链接]
3465|11
 楼主| nono2000 发表于 2012-11-12 13:26 | 显示全部楼层 |阅读模式
本帖最后由 nono2000 于 2012-11-12 13:38 编辑

signal  IO    : std_logic_vector(7 downto 0);   
  ...........................................................................
         process(IO_en,IO_arr)               
           begin                                            
             IO <= IO_arr(0);    <--- 为什么要这行?             
             for i in 1 to ext_mux_in_num-1 loop            
               if IO_en(i)='1' then                  
                IO <= IO_arr(i);              
               end if;                                      
             end loop;                                      
           end process;  
请问我搞不懂 IO 最後值?


Verilog "for"应用我知道,但是  vhdl 实在不 知道,......
谁人告诉我 VHDL FOR 动作流程?


lxAPP 发表于 2012-11-12 21:33 | 显示全部楼层
坐等猴哥。
GoldSunMonkey 发表于 2012-11-12 21:41 | 显示全部楼层
1. 那一行是把第0位的付给 IO.
2. 以后开始循环,如果中间出现了IO_EN(I)为1的情况,就把这个第I位的付给IO.

IO最后的值,要么等于第0位,要么等于最后一位出现IO_en=1的那一位
GoldSunMonkey 发表于 2012-11-12 21:41 | 显示全部楼层
明白了么??
 楼主| nono2000 发表于 2012-11-12 22:16 | 显示全部楼层
本帖最后由 nono2000 于 2012-11-12 22:19 编辑
1. 那一行是把第0位的付给 IO.
2. 以后开始循环,如果中间出现了IO_EN(I)为1的情况,就把这个第I位的付给IO.

IO最后的值,要么等于第0位,要么等于最后一位出现IO_en=1的那一位 ...
GoldSunMonkey 发表于 2012-11-12 21:41


你是所谓的开始循环,是每次(IO_en,IO_arr)发生变动时才会判断
但是如果IO_EN(I)多位元为 "1" 时,他该怎么输出?

例如: IO_EN(0)= 1 及 IO_EN(2)= 1 时,那么 IO 的值是多少?

Verilog "for" 可以用 case 展开结果,但是 VHDL 是否可用 case 展开?
GoldSunMonkey 发表于 2012-11-12 22:24 | 显示全部楼层
输出最后一个。你的例子里面是第2位

仿佛不能用Case.具体查语法吧。
所有语言(HDL语言中的VHDL和Verilog)都不会常用这个的。
 楼主| nono2000 发表于 2012-11-12 22:52 | 显示全部楼层
我知道很少人使用 FOR LOOP 语法.
你的意思说,程序开始使用 IO <= IO_arr(0) ,以后依IO_EN(I)=1 "I"的最(后)值决定最后输出IO值吗.
谢谢
GoldSunMonkey 发表于 2012-11-12 23:36 | 显示全部楼层
星星之火红 发表于 2012-11-14 18:37 | 显示全部楼层
希望结帖
星星之火红 发表于 2012-11-14 18:37 | 显示全部楼层
GoldSunMonkey 发表于 2012-11-14 18:47 | 显示全部楼层
结帖;P
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

44

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部