打印

刚开始学VHDL 请教各位一个问题!!

[复制链接]
1400|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
soap21|  楼主 | 2010-12-9 14:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
想将信号d扩展20个脉宽输出 用VHDL语言怎么实现?以下是自己的代码 但是编译有错 纠结了半天!
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
use ieee.std_logic_arith.all;
entity count5 is
port(clk,d:in std_logic;
  q:out std_logic);
end;
architecture rtl of count5 is
signal q1:std_logic_vector(4 downto 0);
signal q2:std_logic;
signal q3:std_logic;
signal q4:std_logic;
begin
process(clk,q2,q3)
begin
if q2='1' then
  q1<="00000";
elsif clk'event and clk='1' then
  if q1="10100" then
   q4<='1';
  else
   q1<=not q1;
  end if;
end if;
end process;

process(clk,d)
begin
if clk'event and clk='1' then
  if d='1' then
   q2<='1';
   q3<='1';
  else
   q2<='0';
  end if;
  end if;
end process;
q<='1' when q4='1' else
   '0' when q3='1' else
   'Z';
end rtl;
想得到的效果如下:  

20脉宽.png (6.24 KB )

20脉宽.png

相关帖子

沙发
sxhhhjicbb| | 2010-12-22 22:40 | 只看该作者
q1<=not q1;这条语句应该是q1 <= q1 + "00001";最好用同步设计,确定主时钟,不介意用异步逻辑设计。

使用特权

评论回复
板凳
艹_艹_艹_艹| | 2010-12-22 22:57 | 只看该作者
:handshake单稳态触发器

使用特权

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

本版积分规则

0

主题

62

帖子

1

粉丝