开发板中心论坛  

返回   开发板中心论坛 > CPLD/FPGA开发论坛 > VHDL开发论坛

VHDL开发论坛 VHDL硬件描述语言应用的经验技巧交流、资料共享论坛

回复
 
主题工具 搜索本主题 显示模式
旧 2010-04-06, 22:40   #1
digimax
实习会员
 
注册日期: 2010-04-06
帖子: 2
声望力: 0
digimax 正向着好的方向发展
默认 数据采集系统求助!

正在毕业设计,现在需要编写一段程序需完成功能如下:
1. 从UART IP核采集数据,存入双口RAM
2. 如果字符串尾三位为:E,N,D,则给DSP一个中断,DSP读走数据,在此期间CPLD继续向双口RAM地址从00111111111111起的存储空间存数据
我的程序已经编译通过,但是libero waveform仿真时无法操作,请各位大神看看程序是不是缺什么东西?

以下是我编写的程序:
library IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

Entity sjcja is
-- Port list
port(
-- Inputs
clka:in STD_logic;
DATA_INa:IN STD_LOGIC_VECTOR(7 DOWNTO 0);
C: OUT STD_LOGIC;---给DSP的中断信号
CEa: out STD_logic;---双口RAM使能
RWa: out std_logic;---双口RAM读写控制
rxrdy:in std_logic; ---UART IP核可读信号
DATA_OUTa: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);----给双口ram的数据信号
address: out std_logic_vector(13 downto 0);----给双口ram的地址信号
oena: out std_logic
);

END sjcja;

ARCHITECTURE compare of sjcja is
signal add: std_logic_vector(13 downto 0):="00000000000000";
signal A: std_logic_vector(7 downto 0);
signal numbera:integer:=0;
signal STATE:character;

Begin

compare1rocess(clka,rxrdy)



BEGIN
IF(CLKa'EVENT AND CLKa='1')THEN

A<=data_ina;
oena<='L';
IF (A="01000101")then
STATE<='E';
CEa<='L';
RWa<='L';
DATA_outa<=A;
add<=add+"00000000000001";
ELSIF(A="1001110" AND STATE='E')then
STATE<='N';
CEa<='L';
RWa<='L';
DATA_outa<=A;
add<=add+"00000000000001";
ELSIF(A= "01000100"AND STATE='N')then
C<='1';
STATE<='B';

numbera<=numbera+1;
if (numbera REM 2=0) then
add<="00000000000000";
else
add<="00111111111111";
end if;


ELSE state<='B';
CEa<='L';
RWa<='L';
DATA_outa<=A;
add<=add+"00000000000001";
END IF;

end if;
END PROCESS COMPARE1;
end compare;
digimax 当前离线   回复时引用此帖
旧 2010-04-07, 22:43   #2
lyl168
初级会员
 
lyl168 的头像
 
注册日期: 2010-02-23
帖子: 15
声望力: 0
lyl168 正向着好的方向发展
默认

楼主用的是Actel器件吧。
没接触过,帮你顶起!

可以尝试把把'L'换成'0'试试。
另外 signal STATE:character; 换成自定义的状态。
个人看法,不一定行,
lyl168 当前离线   回复时引用此帖
旧 2010-04-08, 18:50   #3
digimax
实习会员
 
注册日期: 2010-04-06
帖子: 2
声望力: 0
digimax 正向着好的方向发展
默认

谢谢
请问你使用过libero的UART IP核么?
现在主要问题是:打开waveform后,我定义的顶层端口信号没有一个被自动载入到waveform的,不知道为什么。
还有,我用的UART IP核要实现一个从rx这个端口(IP核的端口)采集串行数据的功能,是需要把rx设为top level么,仿真时数据怎么输入?
digimax 当前离线   回复时引用此帖
旧 2010-04-08, 22:19   #4
refiner
版主
 
refiner 的头像
 
注册日期: 2010-02-23
帖子: 39
声望力: 1
refiner 正向着好的方向发展
默认

没有过 libero ,我们用的是altera的芯片,呵呵。
refiner 当前离线   回复时引用此帖
回复

书签

主题工具 搜索本主题
搜索本主题:

高级搜索
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码

论坛跳转


所有时间均为 北京时间 (GTM +8)。现在的时间是 10:40


Powered by Huanor® 版本 3.8.4
版权所有 ©2005 - 2010,北京华诺铭科电子科技中心
ICP备案证书号:京ICP备08101251号  
开发板中心