导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→用VHDL编XILINX9500如何做一个上升/下降沿触发的[guest]

 *第25379篇: 用VHDL编XILINX9500如何做一个上升/下降沿触发的单个脉冲?

  
楼 主:guest 2004年9月5日15:59
 用VHDL编XILINX9500如何做一个上升/下降沿触发的单个脉冲?
我在用XILINX9500XLCPLD做一个功能,需要在外输入一个长的脉冲(+3.3V>  10ms长)时,用上升沿触发产生一个短脉冲(+3.3V>  1微秒,最好精确到10ns),注意就一个.我做出来了多个的脉冲,但是只要长的脉冲高(3.3V),这儿短脉冲就在重复,另外请注意长的脉冲和时钟不同步. 问如何实现?
  
2楼:jessesung 2004年9月7日10:26
 很容易呀!
这个很容易实现呀,只要用两个触发器加上一个与门就可以了。
简单的写:(vhdl不是很熟,描述大概的意思)
signal inter_signal_1 : std_logic;
signal inter_signal_2 : std_logic;

process (clk)
if(clk'event and clk=1) then
inter_signal_1   <= pluse_in;
inter_signal_2   <= inter_signal_1;
end if;

pluse_out   <= inter_signal_1 and (not inter_signal_2);

只要改变你的clk的频率,就可以获得你想要的脉冲了!而且只有一个!

  
3楼:guest 2004年9月8日13:13
 谢了,但我试了,怎么不工作呀?
  
4楼:jessesung 2004年9月10日10:05
 你有没有加reset信号,将初始状态都设成0
我用verilog写:

wire PLUSE_OUT;
reg  INTER_PULSE_1,INTER_PULSE_2;

always @ (negedge SYS_RST_N or posedge SYS_CLK)
if(!SYS_RST_N)
begin
       INTER_PULSE_1  <= 0;
       INTER_PULSE_2  <= 0;
end
else
begin
       INTER_PULSE_1   <=PULSE_IN;
       INTER_PULSE_2   <=INTER_PULSE_1;
end

assign PULSE_OUT = INTER_PULSE_1 && (!INTER_PULSE_2)


>>>>>>对该主题发表你的看法

本主题贴数4,分页: [第1页]


[上一篇主题]:很是奇怪的事情!!!

[下一篇主题]:问题请教:protel 99如何设置pcb的尺寸?