modelsim仿真的一个小问题

durant 2010-12-22 10:21:52


提示如下


代码很简单,主要想学习下modelsim
LIBRARY  IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY clkdiv IS
PORT(clk : IN STD_LOGIC;
clk_div6 : OUT STD_LOGIC);
END clkdiv;

ARCHITECTURE rtl OF clkdiv IS
SIGNAL count : STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL clk_temp : STD_LOGIC;

BEGIN
PROCESS(clk)
BEGIN
IF (clk'event AND clk='1') THEN
IF(count="10") THEN
count <= (OTHERS =>'0');
clk_temp <=NOT clk_temp;
ELSE
count <= count +1;
END IF ;
END IF ;
END PROCESS;

clk_div6 <= clk_temp;

END rtl;
...全文
179 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
benjaminweber 2010-12-25
  • 打赏
  • 举报
回复
原因是count没有初始值
把SIGNAL count : STD_LOGIC_VECTOR(1 DOWNTO 0);
改成SIGNAL count : STD_LOGIC_VECTOR(1 DOWNTO 0) := 0;
即可

Quartus仿真通过也许是默认初始值了
硬件上这个是不需要的,仅仅是仿真需要

count <= count + 1
是可以的,这个扩展在STD_LOGIC_ARITH里面定义,如果只有STD_1164则不行
YTerrenceLau 2010-12-23
  • 打赏
  • 举报
回复
clk_temp没有初值,可以增加一个复位信号,在处理复位信号的时候赋初值。
durant 2010-12-23
  • 打赏
  • 举报
回复
那为什么在modelsim和quartus里编译都是通过的
Great_Bug 2010-12-23
  • 打赏
  • 举报
回复
count <= count+1;
这句有问题。它的类型是STD_LOGIC,不能做那样的运算
durant 2010-12-23
  • 打赏
  • 举报
回复
可以理解成那个程序在实际使用中会出现问题的?

虽然quartus编译是对的,而且仿真也没有问题

6,120

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧