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

求助:用VHDL写74l373遇到的问题

求助:用VHDL写74l373遇到的问题

求助:用VHDL写74l373遇到的问题
最近用用Verilog HDL语言写373后,把程序烧进CPLD,然后在单片机里运行读写外部RAM(HY8400,512K)时发现有些地址写不进去,比如以FF结尾的地址,我用的单片机是PHILIPS的P89C51RD2HBA,各位大侠以前遇到过这样的问题吗?以下是我写的VHDL代码,Verilog HDL 也写了,效果多一样。

下面使用VHDL语言,采用传统的自下而上的方法设计74373。
首先设计锁存器(Latch),将实现Latch的VHDL程序保存在文件latch.vhd中。

LIBRARY  IEEE;
USE  IEEE.STD_LOGIC_1164.ALL;
ENTITY  Latch  IS
  PORT ( D:    IN  STD_LOGIC;
         ENA : IN  STD_LOGIC;
         Q   : OUT  STD_LOGIC );
END  Latch;
ARCHITECTURE  one  OF  Latch  IS
  SIGNAL  sig_save : STD_LOGIC;
BEGIN
  PROCESS ( D,ENA )
  BEGIN
      IF  ENA = ’1’  THEN
           Sig_save <= D;
      END  IF;
      Q <= sig_save;
       END  PROCESS;
END  one;
SN74LS373的VHDL语言设计程序如下:
LIBRARY  IEEE;
USE  IEEE.STD_LOGIC_II64.ALL;
ENTITY  SN74373  IS
  PORT (  D    : IN  STD_LOGIC_VECTOR( 8  DOWNTO  1);
          OEN, G : IN  STD_LOGIC;
          Q   : OUT  STD_LOGIC_VECTOR( 8  DOWNTO  1 ) );
END  SN74373;
ARCHITECTURE  one  OF  SN74373  IS
COMPONENT  Latch
     PORT (  D, ENA : IN  STD_LOGIC;
             Q      : OUT  STD_LOGIC);
  END  COMPONENT;
  SIGNAL  sig_mid : STD_LOGIC_VECTOR(8  DOWNTO  1);
BEGIN
  GeLatch : FOR  iNum  IN  1  TO  8  GENERATE
    Latchx : Latch  PORT  MAP( D(iNum),  G,  sig_mid(iNum) );
  END  GENERATE;

      Q <= sig_mid  WHEN  OEN = ‘0’  ELSE  “ZZZZZZZZ”;
    END  one;
ARCHITECTURE  two  OF  SN74373  IS
      SIGNAL  sigvec_save : STD_LOGIC_VECTOR( 8  DOWNTO  1);
    BEGIN
      PROCESS ( D,  OEN,  G)
      BEGIN
          IF  OEN = ‘0’  THEN
             Q <= sigvec_save;
          ELSE
             Q <= “ZZZZZZZZ”;
          END  IF;
          IF  G = ‘1’  THEN
             Sigvec_save <= D;
          END  IF;
      END  PROCESS;
    END  two;


以下是Verilog HDL代码:

以下是Verilog HDL代码:

module cpld(l_addr_out,ale);
   
 output [7:0] l_addr_out;
        input ale;

       always @(negedge ale)
   begin
          mcu_8400_data = mcu_data;                     
           end
   assign l_addr_out = mcu_8400_data ;
 endmodule
这个写的有点简单,我只用上面的64K做实验,HY8400的高三位一直附0。


"然后在单片机里运行读写外部RAM(HY8400,512K)时发现有些地址写不进去"

这会是程序问题吗?单片机和外部ram又没有问题?

 ROCESS ( D,ENA )
  BEGIN
      IF  ENA = ’1’  THEN
           Sig_save <= D;
      END  IF;
      Q <= sig_save;
       END  PROCESS;
END  one;
这个程序很简单,不会有什么竞争冒险,也就是不会出现时行,时不行的情况。你再检查一下。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

楼主有QQ吗

可否加258162863

请教问题

楼上有什么问题可以提出来讨论嘛,是程序还是设计的问题啊
这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

程序问题~~

我练习用COMPONENT元件例化,可写出来的程序不能正确锁存,也是373的

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY shaoxie373 IS
PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
EN0,EN1,EN2,EN3,EN4,EN5,EN6:IN STD_LOGIC;
G:IN STD_LOGIC;
P1:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
P2:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
P3:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
P4:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
P5:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
P6:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
P7:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END shaoxie373;

ARCHITECTURE structure OF shaoxie373 IS
COMPONENT three
PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
EN:IN STD_LOGIC;
G:IN STD_LOGIC;
P:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END COMPONENT;
BEGIN
U1:three
PORT MAP(D,EN0,G,P1);
U2:three
PORT MAP(D,EN1,G,P2);
U3:three
PORT MAP(D,EN2,G,P3);
U4:three
PORT MAP(D,EN3,G,P4);
U5:three
PORT MAP(D,EN4,G,P5);
U6:three
PORT MAP(D,EN5,G,P6);
U7:three
PORT MAP(D,EN6,G,P7);
END structure;

--373描述

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY three IS
PORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
EN:IN STD_LOGIC;
G:IN STD_LOGIC;
P:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END three;

ARCHITECTURE struct OF three IS
SIGNAL TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS(EN)
BEGIN
IF(G='1')THEN
P<="ZZZZZZZZ";
ELSIF(EN='1')THEN
P<=D;
END IF;
END PROCESS;
END struct;

从零开始学电子!必看!

从零开始学电子!必看!
; b4 D- |" i, c0 g6 W7 ~( J& N双向触发二极管亦称二端交流器件( DIAC )介绍 : w+ W+ ^' @. {. g
各种温度传感器分类及其原理
, E& s4 O* F5 S( D3 X4 B% g& u数字温度传感器原理介绍
; x+ h7 r3 i$ T功放管的三种工作状态 9 y' v) Q5 |3 o4 {+ ?( }0 ?+ q, X
稳压二极管 9 K' j: n0 `' I7 Z
电子鼻传感器
: a: {" w0 t. [+ h" C振动传感器集中营; v+ P6 O0 J1 g& U2 S% M% y
贴片电阻标准阻值系列型号 ! _) }# L! \6 o2 j" ^! e
红外接收头的构造 , N9 \) Q% x6 v5 y
电器的工作原理和特性    6 }7 I% N" [8 I0 q/ T
二极管的检测方法与经验 ! t+ z9 b1 ~4 a7 \
场效应管检测方法与经验 + r" q7 E. J; m' @3 J6 k
电容器的基础知识及检测方法
7 C7 D% F2 I% |电容的型号命名 # ?0 f" k) Q% y
继电器的基础知识 y3 k! O/ o1 A" m* K y
触发器基础知识1 C: m6 Q& @+ M) U, A& y5 o7 r
放眼看元件——电感和MOS管
% @9 n& t1 i7 j' z+ P- K+ `电容器选用的基本知识
" A4 |' [8 H$ f/ S& s+ M光耦合器介绍 . i. j- x* A4 V' j) k: E1 K
LED的基本知识功放管的三种工作状态
/ l2 g+ ?, p# u- P零起步学习51单片机C语言(六) $ J$ B: U9 d$ t8 `- j
最详实的感光电路制作方法
! d( v$ P/ O6 x$ @ 电路基本概念
; k+ |! Q4 w* @1 N e* n/ N" V& {如何正确使用电烙铁 - s6 q, p/ B y8 d) ~
简易节能电烙铁
# B. W- D4 i9 l8 O- m7 `* }感光电路板的使用
1 r# O" U* ~8 Z: W, Y) I1 \4 d晶体三极管引脚的识别方法9 g! h/ X7 U0 Q3 p: |. b8 E
基础知识普及:贴片电阻标准阻值系列型号
4 V+ a' }4 T5 U6 m3 H% C电路设计的几个误区 ( j$ \5 x s: U: \, O
集成电路
* T3 k. \' ^: [6 F# ~* ^$ `示波器名词解释 $ `6 K2 ~$ U e9 M
手工焊接的基本操作 0 ^7 u+ n4 j5 \! W/ W; u3 M$ e( T6 |
覆铜板知识-覆铜板的结构
+ a7 L! u t1 ?; X 基本电子概念
- h% s9 q+ m% \. H 电子学习者必看!!! t; C7 T, f& S) H2 c
电路基本概念 3 B0 \+ y8 `" U: Y7 g4 h
常用电子元件扫盲篇 + i/ p d* x* W; w
一位电子工程师总结的如何看电子电路图

PROCESS ( D,ENA )
BEGIN
IF ENA = ’1’ THEN
Sig_save <= D;
END IF;

是的,这种没有else的非同步电路就是锁存器的标准写法,除非是专门写,在同步电路中应该避免。

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

你写的代码没有问题,就是iNUM没有定义,你可用直接写成是i,再就是两个文件要再同一个工程下编译,我已经按这要求改好并且编译和仿真成功

iNUM 是什么??

恩,好像没有inum哦,楼上是不是弄错了哦

这个版主不太冷 =========================== 我的中电网博客:http://blog.chinaecnet.com/u/20/index.htm

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY LS373 IS
PORT( D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
OE:IN STD_LOGIC;
LE:IN STD_LOGIC
);
END LS373;
ARCHITECTURE ONE OF LS373 IS
SIGNAL Q_TEMP:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
PROCESS(LE,OE,D)
BEGIN
IF OE='0' THEN
IF LE='1' THEN
Q_TEMP<=D;
END IF;
ELSE Q_TEMP<="ZZZZZZZZ";
END IF;
END PROCESS;
Q<=Q_TEMP;
END ONE;

下面是RTL

[此贴子已经被作者于2008-12-26 10:23:31编辑过]

返回列表