简易逻辑分析仪
- 格式:doc
- 大小:916.76 KB
- 文档页数:11
安阳工学院电子信息与电气工程学院
《EDA技术》课程大作业
题目:简易逻辑分析仪
班级: 2011级电子信息工程一班
评分标准:
1、题目难易度。 10%
2、设计和结论正确,分析清晰合理。 40%
3、大作业报告阐述清晰,格式规范。 20%
4、陈述清晰,回答问题正确。 30%
大作业成绩
总成绩=T+J*40%+(J+J*(X-1/N))*30%
T为回答问题成绩,J为教师成绩,X为学生自评分值,N为小组人数
简易逻辑分析仪
1. 设计任务
逻辑分析仪可以将数字系统中的脉冲信号、逻辑控制信号、总线数据甚至毛刺脉冲都能同步高速的采集进该仪中的高速RAM中暂存,以备显示和分析。我们所设计的简易逻辑分析仪是一个8通道的逻辑数据采集电路,它可以将输入到RAM中的计数结果通过输出线完整地按地址输出出来,其中CLK(时钟信号),CLK_EN(时钟使能信号),CLR(清零端),WREN(写入允许控制)和DIN(7..0)(写入允许控制),OUTPUT(八位数据输出)。预期可以将输入到简易逻辑分析仪中的数据可以完整的读取出来。
2.设计方案
我们所设计的简易逻辑分析仪主要有三个功能模块构成:一个8位LMP_RAM0,存储1024个字节,有十根地址线;一个十位计数器LMP_COUNTER和一个锁存器74244。设计思路框图如下图一:
图一设计思路框图
3. 方案实施
3.1、LPM计数器模块的设计
首先打开一个原理图编辑窗,存盘取名为 eda1,然后建成工程,在进入本工程的原理图,单击Mega Wizard Plug-In Manger 管理器按钮,然后进入如图二所示的窗口,选择LPM-COUNTER模块,再选择CycloneⅢ和VHDL;文件名为CONT10B。
图二从原理图编辑窗进入LPM计数器编辑模块最终生成的计数器如图三所示:
图三 LPM计数器模块LPM计数器模块的VHDL文件如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY lpm;
USE lpm.all;
ENTITY cnt10 IS
PORT
( aclr : IN STD_LOGIC ;
clk_en : IN STD_LOGIC ;
clock : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)); END cnt10;
ARCHITECTURE SYN OF cnt10 IS
SIGNAL sub_wire0 : STD_LOGIC_VECTOR (9 DOWNTO 0);
COMPONENT lpm_counter
GENERIC (
lpm_direction : STRING;
lpm_port_updown : STRING;
lpm_type : STRING;
lpm_width : NATURAL
);
PORT (
clk_en : IN STD_LOGIC ;
aclr : IN STD_LOGIC ;
clock : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (9 DOWNTO 0)
);
END COMPONENT;
BEGIN
q <= sub_wire0(9 DOWNTO 0);
lpm_counter_component : lpm_counter
GENERIC MAP (
lpm_direction => "UP",
lpm_port_updown => "PORT_UNUSED",
lpm_type => "LPM_COUNTER",
lpm_width => 10
)
PORT MAP (
clk_en => clk_en,
aclr => aclr,
clock => clock,
q => sub_wire0 );
END SYN;
3.2、LPM随机存储器模块的设计
按照以上设计LPM计数器模块,再次打开Mega Wizard Plug-In Manger管理器按钮,然后进入如图3所示的窗口,选择RAM:1-PORT模块,再选择CycloneⅢ和VHDL,文件
取名为RAM0。然后按照设计要求选择合适的参数制定本次设计所需要的模块,在设计本模块时,由于不需要输出RAM之前内部的数据,只是读出当前输入的数据,所以我们没有向里面加载数据,使他为空如图三所示。端口读写选择为:new data,如图四所示。
图四 RAM的编辑模块
最终生成的RAM如图五所示:
图五:RAM模块
LPM计数器模块的VHDL文件如下:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY altera_mf;
USE altera_mf.all;
ENTITY ram IS
PORT
(
address : IN STD_LOGIC_VECTOR (9 DOWNTO 0);
data : IN STD_LOGIC_VECTOR (7 DOWNTO 0);
inclock : IN STD_LOGIC ;
inclocken : IN STD_LOGIC ;
wren : IN STD_LOGIC ;
q : OUT STD_LOGIC_VECTOR (7 DOWNTO 0) );