2623|4

77

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

一个百思不得其解的VHDL问题 [复制链接]

这段时间做毕业设计时遇到了VHDL程序的一个问题,百思不得其解,希望各位前辈不吝赐教

源程序是这样的 :

library ieee;
use ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_unsigned.ALL;
entity controler is
port
(clk,reset,jia,jian:in std_logic;
  paralleloutut std_logic_vector(7 downto 0)
);
end;
architecture behavior of controler is
signal fre,foot:std_logic_vector(39 downto 0);
begin
  process(clk,reset,jia,jian)
  variable i:integer range 0 to 4;
      begin
    foot<="0000000000000000000000000000000001100100";
    if(reset='1' or jian='1' or jia='1') then
    i:=4;
    if reset='1' then
     fre<="0000000010000000000000000000000000000000";
    elsif jian='1' then
    fre<=fre-foot;
    else if jia='1' then
    fre<=fre+foot;
    end if;
    end if;
    elsif rising_edge(clk) then
case i is
when 4=> parallelout <= fre(39 downto 32);i:=3;
when 3=> parallelout <= fre(31 downto 24);i:=2;
when 2=> parallelout <= fre(23 downto 16);i:=1;
when 1=> parallelout <= fre(15 downto 8);i:=0;
when 0=> parallelout <= fre(7 downto 0);i:=4;
end case;
end if;
end process;
end;

仿真结果是 如附件 (不知道怎么贴图片,不好意思拉):


现在我郁闷的是为什么jian(或jia)引脚来过高电平之后,reset为什么不能正确的复位(给fre如程序所指定的初始值)? 哪里出问题呢?
谢谢!!

(好象不能贴上仿真图,不好意思)

最新回复

请教一下:reset= '1 &apos;这个操作是什么意思,我才初学,没怎么见这样的语句。谢谢!  详情 回复 发表于 2007-11-9 11:05
点赞 关注

回复
举报

75

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
library ieee;
use ieee.std_logic_1164.all;
USE IEEE.STD_LOGIC_unsigned.ALL;
entity controler is
port
(clk,reset,jia,jian:in std_logic;
  paralleloutut std_logic_vector(7 downto 0)
);
end;
architecture behavior of controler is
signal fre,foot:std_logic_vector(39 downto 0);
begin
  process(clk,reset,jia,jian)
  variable i:integer range 0 to 4;
      begin
    foot<="0000000000000000000000000000000001100100";  -- 任意信号有了变化
                                                             -- 此处都会执行
    if(reset='1' or jian='1' or jia='1') then
    i:=4;
    if reset='1' then
     fre<="0000000010000000000000000000000000000000";  -- 你的reset很可能
                                                             -- 没有期望的功能
    elsif jian='1' then
    fre<=fre-foot;
    else if jia='1' then
    fre<=fre+foot;
    end if;
    end if;
    elsif rising_edge(clk) then
case i is
when 4=> parallelout <= fre(39 downto 32);i:=3;
when 3=> parallelout <= fre(31 downto 24);i:=2;
when 2=> parallelout <= fre(23 downto 16);i:=1;
when 1=> parallelout <= fre(15 downto 8);i:=0;
when 0=> parallelout <= fre(7 downto 0);i:=4;
end case;
end if;
end process;
end;
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
建议你把思路从新整理以下,现在的逻辑关系比较杂乱,像楼上所指出的那样,很多地方都不能实现预期功能
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
建议楼主把时序图画一下,方便别人看,也可以给自己一个思路
jia           _________-____________________
jian          _________________-____________
paralleloutut --------------9--------------- 像这样也可以
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
请教一下:reset= '1 &apos;这个操作是什么意思,我才初学,没怎么见这样的语句。谢谢!
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表