打印
[VHDL]

帮帮我看看哪里出问题了。达不到预期效果,我是个新手

[复制链接]
848|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
源程序:
entity tmp_tj is
port(clk,swch:in std_logic;
     tmp_s:in std_logic_vector(7 downto 0);
          tmp_room: in std_logic_vector(7 downto 0);
          ht,rg,swch:out std_logic
     );
end tmp_tj ;
architecture oper of tmp_tj is
signal tm_in :std_logic_vector(7 downto 0);
signal tm_set :std_logic_vector(7 downto 0);
begin
tm_in<=tmp_room;
tm_set<=tmp_s;
process(clk,swch)
begin
if (swch='1') then
  if(clk'event and clk='1' ) then
      if (tm_in=tm_set) then
                      ht<='1';
                                rg<='1';
                                swi<='0';
                  elsif(tm_in>tm_set) then
                      ht<='0';
                                rg<='1';
                  else
                      ht<='1';
                      rg<='0';
        end if;
                end if;
  end if;
end process;
end oper;

问题: 我不知道怎么跳出自动温度调节模式,我看了好久的语法书和修改好多方式都达不到预期效果 ,求大神指导谢谢

QQ截图20190515144452.png (37.96 KB )

QQ截图20190515144452.png

使用特权

评论回复

相关帖子

沙发
zhangmangui| | 2019-5-15 22:19 | 只看该作者
VHDL中的判断相等是=还是==啊   
verilog是==

使用特权

评论回复
板凳
ucx| | 2019-5-19 21:52 | 只看该作者
开始用VHDL的时候首先要明确其是一种硬件描述语言,也就是说你写一句话的时候要大概知道是一个什么电路。
比如if(clk'event and clk='1' ) 是说clk这个信号要接到相关触发器的时钟上,1164库里写成rising_edge(clk)更加直观。
那么if (swch='1') then
  if(clk'event and clk='1' ) then 这两行要表达什么呢?是想用swch作使能吗?如果作使能通常要把这两行的顺序倒过来。
图中给一共标出了7中状态,那么要给这7种状态一个编码,比如从000多111可以作为一种。那么根据当前状态、下一状态、转移条件写出状态机的变化是很容易的事了。
状态机的转移与是否使用VHDL无关。都是一个套路。

使用特权

评论回复
地板
xiaoxiao4816|  楼主 | 2019-5-23 10:17 | 只看该作者
ucx 发表于 2019-5-19 21:52
开始用VHDL的时候首先要明确其是一种硬件描述语言,也就是说你写一句话的时候要大概知道是一个什么电路。
...

明白了 谢谢

使用特权

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

本版积分规则

4

主题

7

帖子

0

粉丝