EDA课程设计 - 图文

更新时间:2024-01-29 06:38:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

FPGA/CPLD CAD技术概述

FPGA(Field Programmable Gates Array,现场可编程门阵列)与CPLD(Complex Programmable Logic Device,复杂可编程逻辑器件)都是可编程逻辑器件,它们是在PAL、GAL等逻辑器件的基础之上发展起来的。同以往的PAL、GAL等相比较,FPGA/CPLD的规模比较大,适合于时序、组合等逻辑电路应用场合,它可以替代几十甚至上百块通用IC芯片。这样的FPGA/CPLD实际上就是一个子系统部件。这种芯片具有可编程性和实现方案容易改动的特点。由于芯片内部硬件连接关系的描述可以存放在磁盘、ROM、PROM或EPROM中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块EPROM芯片,就能实现一种新的功能。FPGA芯片及其开发系统问世不久,就受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。

经过了十几年的发展,许多公司都开发出了多种类型的可编程逻辑器件(PLDs,Programmable Logic Devices).比较典型的就是Xilinx 公司的FPGA 器件系列和Altera公司的CPLD 器件系列,它们开发较早,占据了较大的PLD市场。当然还有其它许多类型器件,这里不再一一介绍。

尽管FPGA、CPLD和其它类型PLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成的:

1、一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心。 2、输入/输出块。

3、连接逻辑块的互连资源,连线资源由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。

ASIC和FPGA/CPLD电路设计的一般流程

通常可将设计流程归纳为以下7个步骤。

第1步:设计输入。在传统设计中,设计人员是应用传统的原理图输入方法来开始设计的。自90年代初,Verilog、VHDL、 AHDL等硬件描述语言的输入方法得到了广大工程设计人员的认可。

第2步:前仿真。所设计的电路必须在布局布线前验证,目的主要是在仿真时,验证电路功能是否有效。在ASIC设计中,这一步骤称为第一次Sign—off.

第3步:设计输入编译。设计输入之后就有一个从高层次系统行为设计向低层次门级逻辑电路的转化翻译过程,即把设计输入的某种或某几种数据格式(网表)转化为底层软件能够识别的某种数据格式(网表),以求达到与其工艺无关。

第4步:设计输入的优化。对于上述综合生成的网表,根据布尔方程功能等效的原则,用更小更快的综合结果替代一些复杂的单元,并与指定的库映射生成新的网表,这是硬件描述语言输入方式中减小电路规模的一条必由之路。

第5步:布局布线。当初步的仿真被验证后,就开始布局布线。这一步可相对规划出ASIC和FPGA/CPLD设计。

第6步:后仿真。设计人员需要利用在布局线中获得的更精确的RC参数再次验证电路的功能和时序。在ASIC设计中,这一步骤称为第二次Sign—off。

第7步:流片。在布局布线和后仿真完成之后,当需要大批量生产该芯片时,就可以开始ASIC芯片的投产。

·1·

第一章 MAX+plus II的安装

1.1 软件包对计算机系统的配置要求

如果你想在你的计算机中安装MAX+plus II 10.2软件包,建议的计算机配置为: 1、PIII 600MHZ以上计算机,原装机或兼容机均可。 2、内存不少于128MB。

3、安装软件包的硬盘分区所剩空间不少于1GB,安装完剩余空间不小于300MB。 4、Microsoft Windowsa 98或Windowsa 2000,xp操作系统。 5、2或3个按钮的鼠标(Microsoft Windows 98兼容)。 6、完好的并行口。

7、八倍速以上速率的光驱(或称CD-ROM)。

1.2 软件包的安装步骤

假设所选用的操作系统为Windowsa 98中文操作系统。

1、把软件包的光碟放入光驱。

2、在\我的电脑\中查找光驱的图标,用鼠标左键快速双击 3、打开\图标文件夹,用鼠标左键快速双击。 4、打开\图标文件夹,用鼠标左键快速双击。

5、打开“FULL”图标文件夹用鼠标左键快速双击.最后双击\图标,启动安装。

接着,软件包引导用户安装,有很多选项让用户选择,用户根据自己设计项目的要求,一一选择。

假设所选用的操作系统为Windowsa 2000或XP中文操作系统。

1、把软件包的光碟放入光驱。

2、在\我的电脑\中查找光驱的图标,用鼠标左键快速双击 3、打开\图标文件夹,用鼠标左键快速双击。 4、打开\图标文件夹,用鼠标左键快速双击。

5、打开“FULL”图标文件夹用鼠标左键快速双击.最后双击\图标,启动安装。

接着,软件包引导用户安装,有很多选项让用户选择,用户根据自己设计项目的要求,一一选择。因为windows 2000或XP操作系统与ALTERA器件接口有所不同,

·2·

所以有windows 2000或XP操作系统环境下加装ALTERA公司MAX+plus II软件包补丁。方法见光盘MAX+plus II 10.2目录下“README”。

1.3 软件狗的安装

为了保护软件的版权,Altera公司特别为MAX+plus II软件包设计了一个软件狗。如果没有软件狗,进入MAX+plus II软件包只开放部分简单功能,很多重要功能是不开放的,这给项目的设计带来诸多不便,尤其是复杂的项目,没有这些功能,设计工作根本没办法展开。在恒科电教的配套光盘里有一个LICENSE _M_Q.dat,用户在使用前须指定它.方法为:打开安将好的MAX+plus II后单击:“Options”在下拉菜单中选择:“License setup”再在弹出的窗口中指定您所复制到硬盘的LICENSE _M_Q.dat即可完成软件狗的安装。

1.4 MAX+PLUSE II下并口的设置

为了将您设计好的工程下载到ALTERA器件中须在下载前对计算机并口进 行相应设置,方法为:在微机的BIOS中确认并口模式为EPP或ECP,之后还要在打开MAX+PLUSEII情况下单击“Options”,在下拉菜单中选择:“Hardware setup”(如果下拉菜单中没有Hardware setup选项,是因为您没有打开下载对话窗口,只有在需要使用并口下载时才会出现Hardware setup对话窗口)。再在弹出的窗口中指定“Hradware Type”为“ByteBlaster(MV)”,“Parallel Port”为“LPT1 :(0X378)”如果你是使用的windows2000或XP那么在进行并口设置前请安装ALTERA并口补丁, 方法见光盘MAX+plus II 10.2目录下“README”。

1.5 无法下载及其解决方法

1、查看电源供电是否正常,电源指示灯是否正常; 2、查看下载接口区电源跳帽是否短接+5V;

3、如果在下载过程中出现“configuration failure: SRAM load unsuccessful”则可能是因为您所使用的微机有病毒值入SRAM中,请更换微机再试或杀毒重试。

·3·

第二章 MAX+PLUSE II 的使用

在这一章中,首先用最简单的实例向读者展示使用MAX+PLUSE II软件的全过程。进入WINDOWS 98后,双击MAX+PLUSE II图标,屏幕如图1.1所示。

图 1.1 MAX+PLUSE II 管理器

1.1 原理图的输入

原理图输入的操作步骤如下:

1、建立我们的第一个项目,单击图1.2中的FILE菜单(单击鼠标左键,以后如无特殊说明含义不变),将鼠标移到Project选项后,单击Name选项,屏幕如1.3所示。在Project Name的输入编辑框中键入dff后屏幕如图1.1所示。

2、在图1.2中单击File菜单后,单击New选项,如图1.3所示:

图 1.2建立新项目的屏幕

图1.3 指定项目名的屏幕

3、在图1.4中选择Graphic Editor file,单击OK按钮后,便进入到MAX+PLUSE

·4·

II 的图形编辑器。如图1.5所示:

4、在图1.5的空白处双击,屏幕如图1.6所示:

5、在图1.6的Symbol Name 输入编辑框中键入dff后,单击ok按钮。此时可看到光标上粘着被选的符号,将其移到合适的位置(参考图 1.7)单击鼠标左键,使其固定;

图1.4 选取文件类型屏幕

图1.5 空白的图形编辑器

图1.6 选择元件符号的屏幕

6、重复4、5步骤,给图中放一个input、not、output符号,如图1.7所示; 7、在图1.7中,将光标移到右侧input右侧待连线处单击鼠标左键后,再移动到D触发器的左侧单击鼠标左键,即可看到在input和D触发器之间有一条线生成;

8、重复步骤7的方法将DFF和output连起来,完成所有的连线电路如图1.8所示; 9、在图1.7中,双击input_name使其衬低变黑后,再键入clk,及命名该输入信号为clk,用相同的方法将输出信号定义成Q;

·5·

10、在图1.8中单击保存按钮,屏幕如图1.9所示;

图1.7放置所有元件符号的屏幕

图1.8 完成全部连接线的屏幕

11、在图1.9中,检查File Name的文本编辑框为dff.gdf(因为项目名为dff,故在缺省情况下,均是在项目名下加不同的扩展名);

12、在图1.9中单击0K按钮,屏幕如图1.8所示;

图1.9 欲保存文件前的屏幕

13、在图1.8中,单击编译器快捷方式按钮

,屏幕如图1.10所示;

14、在图1.10中,单击Processing菜单,检查Timing SNF Extractor选项,使其被选中(即该行前有对号),处理完后,再次回到图1.10的环境下;

15、在图1.10中,单击Assign-Device菜单,屏幕如图1.11所示;

16、完成如图1.11所示的选择后,单击ok按钮,再次回到图1.10的环境下;

图 1.10 编译器屏幕

·6·

图1.11 选择待编程芯片的屏幕

17、在图1.10中,单击Start按钮后,计算机开始处理数据,其进度情况用一水平红线表示,结束后屏幕如图1.12所示;

18、在图1.12中,如果有“0 errors”和“0 warnings”字符出现,则表示编译完全通过,单击OK按钮后,屏幕显示如图1.10所示;

19、关闭该窗口,屏幕显示如图1.8所示;

20、在图1.8中(此处认为实验板已安装妥当,有关安装方法见实验板详细说明)单击

按钮,屏幕显示如图1.13所示。

21、在图1.13中点击“Configure”即可进行下载,如需要进行引脚分配,可以参照本公司提供的引脚分配图。(附录三)

1.12 完成编译后的屏幕

图1.13 下载对话框

1.2 文本编辑 (VHDL)

这一节中将向读者简单介绍如何使用MAX+PLUSEII软件进行文本编辑。

文本编辑(VHDL)的操作如下:

1、建立我们的abc项目如图1.14所示:

·7·

频 率 计

一、设计目的:

1、进一步了解EDA语言功能

2、了解EDA在高频工作下的优势,这是单片机无法比拟的 二、设计原理:

采用一个标准的基准时钟,在单位时间如(1s)里对被测信号的脉冲数进行计数,即为信号的频率。

8位数字频率计的顶层框图(endfreq.gdf)如图7.1所示,整个系统可分为四个模块:控制模块、计数测量模块、锁存器模块和显示模块。

1、控制模块(testctl.vhd):

控制模块的作用是产生测频所需要的各种控制信号。控制信号的标准输入时钟为1HZ,每两个时钟周期进行一次频率测量。该模块产生的3个控制信号,分别为teten,load,clr_cnt。Clr_cnt信号用于在每次测量开始时,对计数器进行复位,以清除上次测量的结果,该复位信号高电平有效,持续半个时钟周期的时间。Teten为计数允许信号,在teten信号的上升沿时刻计数模块开始对输入信号的频率进行测量,测量时间恰为一个时钟周期(正好为单位时间1s),在此时间里对被测信号的脉冲数进行计数,即为信号的频率。然后将值锁存,并送到数码管显示出来。设置锁存器的好处是使显示的数据稳定,不会由于周期性的清零信号而不断闪烁。在每一次测量开始时,都必须重新对计数器清0。

待测信号 teten 锁存 控制 计数 标准时钟 load 模块 模块 .. clr_cnt 锁存器 显示 模块 图7.1 8位数字频率计的原理框图

控制模块的几个控制信号的时序关系如图7.2所示。从图中可看出,计数使能信号tsten在1s的高电平后,利用其反相值的上跳沿产生一个锁存信号load,随后产生清0信号上跳沿clr_cnt。

·8·

clk

teten load

clr_cnt

图7.2 控制信号时序关系

2、计数模块(count10.vhd):

计数器模块是由8个带有异步清零端,进位信号输出的模为10的计数模块级连而成

3、锁存器模块(reg32b.vhd):

锁存器模块也是必不可少的,测频模块测量完成后,在load信号的上升沿时刻将测量值锁存到寄存器中,然后输出到显示模块。

4、显示模块(display.gdf):

该模块在单片机实验已经详细阐述,这里就不再讲述。 三、连线:

1、实验板右下方频率源 CLK1接任意频率作为扫描频率。 2、CLK5接1HZ作为门控信号。

3、从实验板中部管脚接线区第60脚引出线,另一头接到实验板右上方的CLK1、CLK2、CLK3、CLK4、 CLK5的任意一个管脚。 四、仿真步骤:(程序:1K30\\freq\\endfreq.sof)

1、在MAX+plusⅡ软件中,按如下顺序点击“File→project→name”出现如下对话框(图7.3),打开e:\\ 1k30\\freq文件夹,在对话框左端选择项目endfreq,点击OK。

图7.3

·9·

2、点“MAX+PLUSⅡ→programmer”后在点”JTAG→multi-device jtag chain setup”出现如下对话框(图7.4),将e:\\ 1k30\\freq\\endfreq.sof项目添加到“multi-device jtag chain setup”, 点 ADD回到“Programmer”对话框 , 点“Configure”即下载。

图7.4

现将原程序如下说明:

---打开count10.vhd 原文件

--带清零和进位输出的十进制同步计数器 library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity count10 is

port( cp: in std_logic; --系统时钟输入 (12M)

clr: in std_logic; --清零信号输入 db: out std_logic_vector( 3 downto 0); --计数信号输出 a: in std_logic; --计数脉冲输入 s: out std_logic; --微分信号输出 CY: out std_logic --进位信号输出

);

end count10;

architecture beha of count10 is

signal q: std_logic_vector( 3 downto 0); signal q1,q2: std_logic; signal EC: std_logic; begin

process(cp,clr) begin

IF CLR='1' THEN

q<= ( others=>'0'); -- 计数器清零

elsif (cp'event and cp='1') then

·10·

q2<=q1; q1<=a; -- 延时2个系统时钟周期

if EC='1' then

if q<9 then -- 计数器加一

q<=q+1; else

q<=( others=>'0'); --等于9计数器清零 end if; end if; end if;

end process;

EC<=not q2 and q1; --微分电路 cy<='1' when q=9 and ec='1' else --进位信号输出

'0';

db<=q; --计数值输出 s<=EC; --微分信号输出 end beha;

---打开endfreq.vhd 原文件

--频率计 (测量范围 1Hz~6M) library ieee;

use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; entity endfreq is

port ( clk: in std_logic; -- 系统时钟(12M)输入

f2: in std_logic; -- 待测信号输入 sel: out std_logic_vector(2 downto 0); -- 显示位选信号输出 outa: out std_logic_vector( 6 downto 0) -- 显示数据输出 );

end endfreq;

architecture behave of endfreq is

component count10 -- 十进制同步计数器组件 port ( cp: in std_logic;

clr: in std_logic; a: in std_logic; s: out std_logic;

db: out std_logic_vector(3 downto 0); cy: out std_logic

);

end component;

signal hex: std_logic_vector( 3 downto 0); signal data: std_logic_vector(31 downto 0); signal data1: std_logic_vector(31 downto 0); signal clr1: std_logic;

signal c0,c1,c2,c3,c4,c5,c6:std_logic;

·11·

signal cy1: std_logic;

signal count: std_logic_vector( 2 downto 0); signal ms: std_logic; signal sec: std_logic; begin

free_count: block -- 产生 400Hz 时钟信号 signal q: std_logic_vector( 14 downto 0); signal rst1,dly: std_logic; begin

process( clk) begin

if rst1='1' then

q<=( others=>'0');

elsif ( clk'event and clk='1') then

q<=q+1; dly<=q(14); end if;

end process;

rst1<='1' when q=30000 else '0';

ms<= dly and not q(14); end block free_count; process( ms) begin

if( ms'event and ms='1') then count<=count+1; end if;

end process;

--8 个十进制同步计数器

u1: count10 port map (cp=>clk,clr=>clr1,a=>f2,s=> open, db=>data(3 downto 0),cy=>c0);

u2: count10 port map (cp=>clk,clr=>clr1,a=>c0,s=> open, db=>data(7 downto 4),cy=>c1);

u3: count10 port map (cp=>clk,clr=>clr1,a=>c1,s=> open, db=>data(11 downto 8),cy=>c2);

u4: count10 port map (cp=>clk,clr=>clr1,a=>c2,s=> open, db=>data(15 downto 12),cy=>c3);

u5: count10 port map (cp=>clk,clr=>clr1,a=>c3,s=> open, db=>data(19 downto 16),cy=>c4);

u6: count10 port map (cp=>clk,clr=>clr1,a=>c4,s=> open, db=>data(23 downto 20),cy=>c5);

u7: count10 port map (cp=>clk,clr=>clr1,a=>c5,s=> open, db=>data(27 downto 24),cy=>c6);

u8: count10 port map (cp=>clk,clr=>clr1,a=>c6,s=> open, db=>data(31

·12·

downto 28),cy=>open);

--8选1数据选择器

hex <= data1(3 downto 0) when count=0 else

data1(7 downto 4) when count=1 else data1( 11 downto 8) when count=2 else data1(15 downto 12) when count=3 else data1(19 downto 16) when count=4 else data1( 23 downto 20) when count=5 else data1(27 downto 24 ) when count=6 else data1(31 downto 28) when count=7 else \

sel<=count; --显示位选信号输出 process( hex) -- 七段译码器 begin

case hex is -- 7 segment encoder

when \when \when \when \when \when \when \when \when \when \when \when \when \when \when \when \

when others => outa<=\

end case; end process;

second: block -- 产生 1 Hz 时钟信号

signal qq: std_logic_vector(23 downto 0); signal rst2,dly: std_logic;

begin

process( clk) begin

if rst2='1' then qq<=(others=>'0');

elsif ( clk'event and clk='1') then qq<=qq+1;

·13·

dly<=qq(23); end if;

end process;

rst2<='1' when qq=12000000 else

'0';

sec<=dly and not qq(23); end block second; process( sec) begin

if( sec'event and sec='1') then —秒信号上升沿时刻读计数值,并存储

data1<=data; end if; end process;

clr1<= sec; --秒信号高电平时,清除全部计数器 end behave;

引脚分配(ACEX EP1K30TC144-3):

out0-P144、out1-P8、out2-P9、out3-P10 、out4-P12、 out5-P13、 out6-P17 sel0-P101、sel1-P102、sel2-P117、clk-P125、f2-P88

管脚标号dout0到dout6分别接到LED的8位段码中的7位上;sel0到sel2接到实验箱中74ls138的输入端;clk1HZ为1HZ标准时钟输入,接到频率源上的clk5;sysclk为LED显示时钟输入,接到频率源上的clk1;freq接入待测信号。管脚标号对应的I/O如下图所示:

User

Assignments Node Name Clk1@125 CLK1HZ endfreq@144 DOUT0 endfreq@8 DOUT1 endfreq@9 DOUT2 endfreq@10 DOUT3 endfreq@12 DOUT4 endfreq@13 DOUT5 endfreq@17 DOUT6 endfreq@88 FREQ endfreq@101 SEL0 endfreq@102 SEL1 endfreq@117 SEL2 sysclk@119 SYSCLK 五、实验现象:显示器上显示实验所测信号的频率值。 六、实验说明:精确:误差小于0.1% 。

·14·

D/A设计

一、目的:了解EDA在数模变换中的应用,学会用EDA控制DAC0832.

二、原理:DAC0832有三种连接方式:直通方式、单缓冲方式和双缓冲方式。在本实验中,DAC0832工作在直通方式下。如附录一NO6 A/D、D/A连接图所示:当SW1,SW2上拨时,ACEX1K30将与DAC0832的CS,WR1相连的I/O口置成低电平,即启动DAC0832工作;数据产生模块不停地将8bit的变化数据输入到DAC0832的8位数字量输入线上,DAC0832输出相应的变化的模拟量;数据产生模块不停地将8bit的变化数据输入到LED显示模块,由于数据变化太快将看到LED上显示88。其系统原理框图如图8.1所示:

显示数据 输出数据 输出模拟量 LED DAC 显示模块 显示 数据 工作时钟 D/A控制信号 0832模块 产生 (直通 模块 方式) 系统控制信号 数据产生模块的工作时钟 图8.1 系统原理框图

三、连线:

1、将适配板上的JC03用二十芯排线与实验板正中下方JC103 IDE-AD/DA相连接。 2、将频率选择区CLK2(即JP156)用短路帽接上65536HZ,CLK3(即JP155)接2929HZ。

3、将实验板左端的JP103全部用短路帽接上(共八个),并将开关区的SW1、SW2上拨。 4、将示波器的探头与实验板右下端的模拟输出座相连。 四、实验内容与步骤:(程序:1K30\\dac0832\\enddac0832.sof)

1、在MAX+plusⅡ软件中,如下顺序点击 “File→project→name”出现如下对话框(图8.2),选中对话框左下方的选项,点击对话框中的enddac0832文件, 再点击OK。

图8.2

·15·

2、依次点击“MAX+plusⅡ→Programmer”后再点击菜单栏中的JTAG→Multi-Device JTAG Chain Setup”出现如下对话框(图8.3),点击Select Programming File...,出现图8.4对话框,将1k30\\ Dac0832\\enddac0832.sof项目选中后点击OK,回到图8.3的对话框,点击ADD把此项目添加到“Multi-Device JTAG Chain Setup”对话框中,点击OK回到Programmer对话框。

按实验连线要求,把实验板上需要连接的导线或短路帽插好,最后打开电源,点击”Configure”即进行下载。下载成功后会出现成功的提示,反之会给出失败的提示。

图8.3

图8.4

3、打开顶层文件enddac0832.gdf如下:

现将原程序如下说明: ---打开dac0832.vhd

·16·

library ieee;

use ieee.std_logic_1164.all; entity dac0832 is port(clk: in std_logic; ----D/A 转换控制时钟

dd: out integer range 255 downto 0; -- 待转换数据 dispdata: out integer range 255 downto 0);-- 待转换数据输出显示 end dac0832;

architecture behv of dac0832 is

signal q: integer range 63 downto 0; signal d: integer range 255 downto 0; begin

process(clk) begin

if (clk'event and clk ='1' ) then

q<=q+1; ---建立转换计数器 end if;

end process; process(q) begin

case q is ---64点正弦波波形数据输 when 00=> d<=255; when 01=> d<=254; when 02=> d<=252; when 03=> d<=249; when 04=> d<=245; when 05=> d<=239; when 06=> d<=233; when 07=> d<=225; when 08=> d<=217; when 09=> d<=207; when 10=> d<=197; when 11=> d<=186; when 12=> d<=174; when 13=> d<=162; when 14=> d<=150; when 15=> d<=137; when 16=> d<=124; when 17=> d<=112; when 18=> d<=99; when 19=> d<=87; when 20=> d<=75; when 21=> d<=64; when 22=> d<=53; when 23=> d<=43; when 24=> d<=34; when 25=> d<=26; when 26=> d<=19; when 27=> d<=13; when 28=> d<=8; when 29=> d<=4; when 30=> d<=1; when 31=> d<=0; when 32=> d<=0; when 33=> d<=1; when 34=> d<=4; when 35=> d<=8; when 36=> d<=13; when 37=> d<=19; when 38=> d<=26; when 39=> d<=34; when 40=> d<=43; when 41=> d<=53; when 42=> d<=64; when 43=> d<=75; when 44=> d<=87; when 45=> d<=99; when 46=> d<=112; when 47=> d<=124; when 48=> d<=137; when 49=> d<=150; when 50=> d<=162; when 51=> d<=174; when 52=> d<=186; when 53=> d<=197; when 54=> d<=207; when 55=> d<=217; when 56=> d<=225; when 57=> d<=233; when 58=> d<=239; when 59=> d<=245; when 60=> d<=249; when 61=> d<=252; when 62=> d<=254; when 63=> d<=255; when others=>NUll; end case;

·17·

end process;

dd<=d; ----D/A转换数据输出 dispdata<=d; ----D/A转换数据显示 end behv;

引脚分配(ACEX EP1K30TC144-3):

dout0-P5、dout1-P6、dout2-P7、dout3-P8、dout4-P9、dout5-P10、dout6-P11、 sel0-P78、sel1-P79、sel2-P80、writeout-P72 csdaout P60、db0-P48、db1-P49、db2-P50、db3-P51、db4-P52、db5-P53、db6-P54、db7-P58、csda-P35、write-P30

管脚标号write、csda分别接开关sw1、sw2;csdaout、writeout分别接DAC0832的CS,WR1;dd0到dd7接DAC0832的8位数字量输入线;dout0到dout6分别接LED的8位段码中的7位;sel0到sel2接到实验箱中74ls138的输入端;sysclk为LED显示的时钟输入,接到频率源clk3;daclk为数据发生模块的系统时钟,接到频率源clk2。

User

Assignments Node Name enddac0832@33 csda enddac0832@88 csdaout enddac0832@56 daclk enddac0832@44 dd0 enddac0832@46 dd1 enddac0832@47 dd2 enddac0832@48 dd3 enddac0832@49 dd4 enddac0832@51 dd5 enddac0832@59 dd6 enddac0832@60 dd7 enddac0832@144 dout0 enddac0832@8 dout1 enddac0832@9 dout2 enddac0832@10 dout3 enddac0832@12 dout4 enddac0832@13 dout5 enddac0832@17 dout6 enddac0832@101 sel0 enddac0832@102 sel1 enddac0832@117 sel2 enddac0832@119 sysclk enddac0832@32 write enddac0832@99 writeout 五、现象:

1、数码右端两个显示88,其余显示零。 2、示波器上显示正弦波信号。

·18·

附 录 一

·19·

·20·

本文来源:https://www.bwwdw.com/article/neew.html

Top