首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

绝对奇怪的问题,大家来看看

绝对奇怪的问题,大家来看看

  用XC9536做的锁存器,单片机向双口RAM里面写数据,其他数据都正常,唯独01写不进去,写进去之后是00,一气之下用循环向一片地址写01,发现有些还是写进去了,但是很少,大概写100个有两三个,但是写其他数据的时候却没有任何问题。莫名其妙,大家想想是什么道理呢?
-
我觉得你的00也写不进去,只是保持不变,所以我觉得是不是0x写不进去
第一位是0是不是影响到了什么地方的判断?
锁存的结果你仿真了吗?结果对吗?
美梦成真-->噩梦降临!
00应该能写进去,比如地址里面是FF的话,写0进去也是00(我再试试),我的P0口是数据地址复用,判断都在P2口,还有,如果我把CPLD擦除,把控制信号直接短接到一块带锁存器的芯片上,能够写01进去,说明还是我的CPLD程序有问题,但是没有查出问题来,如果我的程序有问题的话,应该什么数都写不进去啊,可是只有01写不进去,郁闷。
-
还是仿真一下看看吧
美梦成真-->噩梦降临!
我仿真了,输入01,在控制正常的情况下,输出01,我明天把波形发上来,办公室不能上网,还真是郁闷。
-
程序也发上来,呵呵。
-
cpld实现的功能和单独的锁存器一样,得到的结果却不一样,是比较怪
美梦成真-->噩梦降临!
程序和仿真结果:

--------------------------------------------------------------------------------
-- Company:
-- Engineer:
--
-- Create Date: 18:18:25 05/08/06
-- Design Name:
-- Module Name: latch - Behavioral
-- Project Name:
-- Target Device:
-- Tool versions:
-- Description:
--
-- Dependencies:
--
-- Revision:
-- Revision 0.01 - File Created
-- Additional Comments:
--
--------------------------------------------------------------------------------

---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

library ieee;
use ieee.std_logic_1164.all;

entity vhdl1 is
port (
cerin:in std_logic;
ceroutut std_logic;
csin:in std_logic;
csoutut std_logic;
semrin:in std_logic;
semroutut std_logic;
ale: in std_logic ;
data_in : in std_logic_vector(7 downto 0);
data_out: out std_logic_vector(7 downto 0);
da12_8: out std_logic_vector(4 downto 0)
);
end vhdl1;

architecture a of vhdl1 is
signal data_temp : std_logic_vector(7 downto 0);
begin
csout<=csin;
cerout<=cerin;
semrout<=semrin;
data_out<=data_temp;
da12_8<="ZZZZZ";

process (ale,cerin,data_in)
begin
if (cerin='0') then
if (ale='1') then
data_temp<=data_in;
end if;
else
data_temp<="ZZZZZZZZ";
end if;
end process;
end a ;
-
[upload=image/pjpeg]uploadImages/shixu.JPG[/upload]
-
你这个是功能仿真吧?做时序仿真才能看到真实的结果,而且你图里面信号的名称怎么都弄没了
ale是不是那个像时钟的那个信号?你设计里面用它的边沿来锁存,不要用电平,要不在ale=0的时候会产生额外的寄存器,可能就会有想不到情况出现
美梦成真-->噩梦降临!
对,是功能仿真,我试一下时序仿真,还没有做过那个。
图里面的名称是我拉得太过去了,看不到了,ALE就是你说的那个,我用边沿来锁存的时候,写到片子里更不对,今天用原理图方式试了一下,还是一样,看来还是时序的问题。
刚接触这个,还不懂时序仿真怎么弄,是不是还需要编写什么,我在用时序仿真的时候MODELSIM要报错,请STONE133指点,谢谢了。
-
那个仿真图最好重新发一下,信号名称都看不到,也不知道有问题没有;
你MODELSIM报错的内容是什么?
美梦成真-->噩梦降临!
找到问题了,是我的仿真头有问题,换一个就好了,谢谢STONE133热心的帮助。报错的好象是库的问题,我在编译UNISIM和SIMPRIM的时候就提示有错误,我再看看,现在对时序仿真还不太懂,连问题都不知道怎么问,呵呵,再次谢谢STONE133,你是一个热心的斑竹,我喜欢这里。
-
谢谢夸奖,虽然不一定能帮上你的忙,但是有这么一个平台大家可以一起交流讨论!
关于MODELSIM库的编译,给你提供一点参考:
1. 安装modelsim:
注意:1)不安装硬件狗驱动;
2)不运行License Wizard。
2.拷crack到安装目录下运行。
3.设环境变量:其中变量名为LM_LICENSE_FILE,变量值为License路径。

自动编译xilinx库:
1.先将modelsim.ini改成存档格式,
2.在DOS环境中,进入Xilinx的根目录,然后依次进入bin,nt目录.
3.运行compxlib -s mti_se -f all -l all -o d:\modeltech_5.8b\xilinx_libs
注意:需要根据你安装的modelsim目录更改d:\modeltech_5.8b\xilinx_libs然后就ok了,就可以的ISE中启动Modelsim进行所有的仿真了。此方法链接了ISE的所有的仿真库。
美梦成真-->噩梦降临!
谢了,我是在MODELSIM环境中编译的,按照你的方法试一下先。
-
返回列表