集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 6510|回复: 15

verilog来分析下啊

[复制链接]
longtime 发表于 2010-6-27 23:58:36 | 显示全部楼层 |阅读模式
ENTITY MYFPGA IS
  PORT(    CLK:     INSTD_LOGIC;
       TRAG:    IN    STD_LOGIC;
       TRAGOUT:     BUFFERSTD_LOGIC);
END;

ARCHITECTURE BHV OF MYFPGA IS
BEGIN
PROCESS(CLK,TRAG,TRAGOUT)
    VARIABLE CNT:INTEGER range 0 to 10 := 0;
BEGIN
IF RISING_EDGE(TRAG) THEN TRAGOUT <= '1';
END IF;
IF FALLING_EDGE(CLK) AND TRAGOUT = '1' THEN CNT := CNT + 1;
IF CNT > 9 THEN CNT := 0; TRAGOUT <= '0';
END IF;
END IF;
END PROCESS;
END;

实现的功能是当TRAG上升沿触发TRAGOUT输出10个clk的高电平。下面的话我是不大明白大家来看下啊,解释下啊!
;----------------------------------------------------------------------------------
在触发沿内部放个if语句是不能被综合的。

这个电路是不可能实现的,你要不用电路图画一个就知道了。
ngtim 发表于 2010-6-28 01:47:58 | 显示全部楼层
不太懂vhdl,但对楼主的设计意图还是很了解的。<br>
至于&ldquo;在触发沿内部放个if语句是不能被综合的。&rdquo;,不清楚vhdl里面的情况,但至少使用verilog<br>
实现时是很正常的使用,绝不存在不可综合的现象。
VVC 发表于 2010-6-28 03:14:41 | 显示全部楼层
没有问题,Q II是可以综合的,不过LZ的编码风格确实不大合乎规范.
ngtim 发表于 2010-6-28 04:37:15 | 显示全部楼层
谢谢大家,这个代码我也是拿人家的来讨论的,我也看的很吃力~~~但确实在MAXPLUSII编译通不过啊!!我改了也通不过~~`<br>
LIBRARY IEEE;<br>
USE IEEE.STD_LOGIC_1164.ALL; <br>
------------------------------------------<br>
ENTITY MYFPGA IS<br>
&nbsp; &nbsp; PORT(&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CLK&nbsp;&nbsp;:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;IN&nbsp;&nbsp;STD_LOGIC;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;TRAG:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;IN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;STD_LOGIC;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;TRAGOUT:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;BUFFER&nbsp;&nbsp;STD_LOGIC);<br>
END;<br>
<br>
ARCHITECTURE BHV OF MYFPGA IS<br>
SIGNAL T_OUT:STD_LOGIC;<br>
BEGIN<br>
PROCESS(CLK,TRAG,TRAGOUT)<br>
BEGIN<br>
IF TRAG'EVENT AND TRAG='1' THEN T_OUT &lt;= '1'; <br>
END IF;<br>
END PROCESS;<br>
-----------------------------------------------<br>
PROCESS(T_OUT,CLK)<br>
VARIABLE CNT:INTEGER range 0 to 10 := 0;<br>
BEGIN<br>
IF CLK'EVENT AND CLK='0' AND T_OUT = '1' THEN <br>
&nbsp;&nbsp;IF CNT = 10 THEN <br>
&nbsp;&nbsp;CNT := 0; TRAGOUT &lt;= '0'; <br>
&nbsp;&nbsp;ELSE CNT := CNT + 1;<br>
END IF;<br>
END IF;<br>
END PROCESS; <br>
TRAGOUT&lt;=T_OUT;<br>
END;
VVIC 发表于 2010-6-28 05:45:15 | 显示全部楼层
大家给我改下啊~~~~~
longtim 发表于 2010-6-28 07:07:20 | 显示全部楼层
你进程里的时钟源太多了吧,改少点应该就可以了<br>
试试这样可以吗<br>
<br>
library ieee;<br>
use ieee.std_logic_1164.all;<br>
use ieee.std_logic_unsigned.all;<br>
<br>
ENTITY myfpga IS<br>
&nbsp; &nbsp; PORT(&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;CLK&nbsp;&nbsp;:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;IN&nbsp;&nbsp;STD_LOGIC;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;TRAG:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;IN&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;STD_LOGIC;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; TRAG_OUT:&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;out&nbsp;&nbsp;STD_LOGIC);<br>
END;<br>
<br>
ARCHITECTURE art OF fo IS<br>
begin<br>
PROCESS(TRAG,CLK)<br>
&nbsp;&nbsp;VARIABLE CNT:INTEGER range 0 to 10 := 0;<br>
&nbsp;&nbsp;BEGIN<br>
&nbsp; &nbsp;IF TRAG='0' THEN<br>
&nbsp; &nbsp;&nbsp; &nbsp;CNT:=0;<br>
&nbsp; &nbsp;&nbsp; &nbsp;TRAG_OUT&lt;='0';<br>
&nbsp; &nbsp;ELSIF RISING_EDGE(CLK) THEN<br>
&nbsp; &nbsp;&nbsp;&nbsp;IF CNT&gt;9 THEN<br>
&nbsp; &nbsp;&nbsp; &nbsp; TRAG_OUT&lt;='0';<br>
<br>
&nbsp; &nbsp;&nbsp;&nbsp;ELSE <br>
&nbsp; &nbsp;&nbsp; &nbsp; CNT:=CNT+1;<br>
&nbsp; &nbsp;&nbsp; &nbsp; TRAG_OUT&lt;='1';<br>
&nbsp; &nbsp;&nbsp;&nbsp;END IF;<br>
&nbsp; &nbsp;END IF;<br>
&nbsp;&nbsp;END PROCESS; <br>
END;
UFP 发表于 2010-6-28 07:19:07 | 显示全部楼层
不知道,学习中
HDL 发表于 2010-6-28 07:46:09 | 显示全部楼层
确实不能综合<br>
<br>
我用ISE去综合,得到的是这个结果<br>
<br>
Signal TRAGOUT cannot be synthesized, bad synchronous description.
UFP 发表于 2010-6-28 09:45:20 | 显示全部楼层
研究下!!!
CTT 发表于 2010-6-28 11:08:09 | 显示全部楼层
谢谢大家了~~~
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-20 03:12 , Processed in 0.066567 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表