3107|5

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

刚学VHDL的新手求教一段程序 [复制链接]

有a,b,c,d四个输入数据,首先让A0=0,A1=0时输出y<=a,然后使WR置0(写输入有效,送出y), 接着再进行计数延时(计数十次,确保数据接收完整),延时完成后使WR置0(关闭通道);再接着让A0=0,A1=1,输出y<=b,用上述流程完成四个数据的依次接收(完成四次即可,不用循环接收)。( 一个四选一选择器连接  一个计十次的计数器  再与一个四通道芯片连接  A0,A1为选择器和芯片的功用片选端)
entity control is
  port(a,b,c,d:in std_logic_vector(7 downto 0);
           A0,A1:in std_logic;
                clk:in std_logic;
            out_y:out std_logic_vector(7 downto 0);
                   y:buffer std_logic_vector(7 downto 0));
end control;
architecture behave of control is
     signal Aaa:std_logic_vector(1 downto 0);
begin
                  Aaa<=A1&A0;
process(a,b,c,d,A,clk)
  variable temp:std_logic_vector(3 downto 0);
  variable en:std_logic:='0';
begin

if  clk'event and clk='1' then
    if Aaa="00" then
         y<=a;  
          if en='0' then
                  if  temp<10 then
                         temp:=temp+1;
                else temp:=(others=>'0');
                end if;
                    en:='1';
           end if;
      end if;
    if Aaa="01" then
        y<=b;
          if en='0' then
                  if  temp<10 then
                         temp:=temp+1;
                else temp:=(others=>'0');
                end if;
                    en:='1';
           end if;
      end if;
    if Aaa="10" then
        y<=c;
          if en='0' then
                  if  temp<10 then
                         temp:=temp+1;
                else temp:=(others=>'0');
                end if;
                    en:='1';
           end if;
       end if;
    if Aaa="11" then
           y<=d;
          if en='0' then
                  if  temp<10 then
                         temp:=temp+1;
                else temp:=(others=>'0');
                end if;
                    en:='1';
           end if;
      end if;
end if;
      out_y<=y;
   end process;
end behave;

上面是自己编的一段部分功能(验证能否延时)的程序,结果好像延时不了,请问是不是计数部分出问题了???还有如何使A1,A0依次为00,01,10,11??
此帖出自FPGA/CPLD论坛

最新回复

我不是说了吗,你的延时语句没作用,是因为所有的状态触发都由条件控制if(Aaa="00")这个语句的问题,知道了吗?  详情 回复 发表于 2011-5-25 12:59
点赞 关注
 

回复
举报

4

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
程序中的out_y是用来观察时序图中有无延时效果的!!
此帖出自FPGA/CPLD论坛
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 
新手建议用状态机搞,这样看起来更简洁!
此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

4
 
从你的程序看,是没有达到你所说的设计效果的。 所有的状态触发都由条件控制if(Aaa="00")
此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 

回复 4楼 eeleader 的帖子

是的,这段程序只是我先用来验证延时的,结果延时不了
此帖出自FPGA/CPLD论坛
 
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

6
 
我不是说了吗,你的延时语句没作用,是因为所有的状态触发都由条件控制if(Aaa="00")这个语句的问题,知道了吗?
此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表