EDA技术实验讲义(含GW48系列EDA实验开发系统详细使用说明)
韶关学院信息科学与技术实验室
【实验1】简单组合电路的设计
(1)实验目的;熟悉QuartusⅡ的Verilog HDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
(2)实验内容1:首先按照第11章给出的步骤,利用QuartusⅡ完成2选1多路选择器的文本编辑输入(mux21a.v)和仿真测试等步骤,给出(mux21a.v)的仿真波形。最后在实验系统上进行硬件测试,实际验证本项设计的功能。
【实验1程序1】
module mux21a (a, b, s, y);
input a,b,s;
output y;
reg y;
always @(a or b or s)
begin
if (s==1'b0)
begin
y<=a;
end
else
begin
y<=b;
end
end
endmodule
(3)实验内容2:完成多路选择器,把mux21a看成是一个元件,利用元件例化模块语句描述,并将此文件放在同一目录E:\muxfile中.以下是参考程序:
【实验1程序2】
module MUXK (a1, a2, a3, s0, s1, outy);
input a1, a2, a3, s0, s1;
output outy;
wire outy;
wire tmp;
mux21a u1 (.a(a2),.b(a3),.s(s0),.y(tmp));
mux21a u2 (.a (a1),.b (tmp),.s (s1),.y (outy));
Endmodule
按第11章的步骤对上例分别进行编译、综合、仿真.并对其仿真波形图1作出分析说明。
图1 仿真波形
(4)实验内容3:引脚锁定以及硬件下载测试。若目标器件是EPM7128SLC84-15,选实验电路模式5,用键1(PIO0,引脚号为4)控制s0:用键2(PIO1,引脚号为5)控制s1:a3、a2和a1分别接clock5(引脚号为75)、clock0(引脚号为2)和clock2(引脚号为70);输出信号outy仍接扬声器Spker(引脚号为81)。通过短路帽选择clock0接256Hz信号,clock5接1024Hz,clock2接8Hz信号。引脚锁定窗如图2所示。最后进行编译、下载和硬件测试实验。
(5)实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。
实验1引脚锁定图
【实验2】简单时序电路的设计
设计含异步清零和同步时钟使能的加法计数器
(1)实验目的:学习计数器的设计、仿真和硬件测试,进一步熟悉Verilog HDL设计技术。
(2)实验原理:实验程序为2,实验原理参考8.3.5节。
(3)实验内容1,按第11章的步骤,在QuartusⅡ上对本设计进行编辑、编译、综合、适配、仿真。说明例中各语句的作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
(4)实验内容2:引脚锁定以及硬件下载测试,若目标器件是EPM7128SLC84-15。建议选实验电路模式5,用键8(PIO7、引脚号为12)控制RST;用键7(PIO6、引脚号为11)控制EN;计数
溢出COUT接发光管D8(PIO15、引脚号为24);CQ是计数输出,接数码1(PIO19-PIO16,低位靠右、引脚号为29、28、27、25);时钟CLK接clock2(引脚号为70),通过跳线选择4Hz信号。引脚锁定后进行编译、下载和硬件测试实验。将实验过程和实验结果写进实验报告。(5)实验报告:将实验原理、设计过程、编译仿真波形和分析结果、硬件测试实验结果写进实验报告。
实验2引脚锁定图
【实验2程序】
module CNT10 (CLK, RST, EN, CQ, COUT);
input CLK,RST,EN;
output[3:0] CQ;
output COUT;
reg[3:0] CQ,CQI;
reg COUT;
always @(posedge CLK)//检测时钟上升沿
begin : u1
if (RST == 1'b1)//计数器复位
begin
CQI={4{1'b0}};
end
begin
if(EN==1'b1)//检测是否允许计数
begin
if (CQI<9)
begin
CQI=CQI+1; //允许计数
end
else
begin
CQI={4{1'b0}}; //大于9,计数值清零
end
end
end
if (CQI==9)
begin
COUT<=1'b1 ; //计数大于9,输出进位信号
end
else
begin
COUT<=1'b0 ;
end
CQ<=CQI ; //将计数值向端口输出
end
endmodule
【实验3】用状态机对ADC0809的采样控制电路实现
(1)实验目的;学习用状态机对A/D转换器ADC0809的采样控制电路的实现。
(2)实验原理:ADC0809的采样控制原理参考有关的详细说明。
ADC0809是CMOS的8位A/D转换器,片内有8路模拟开关,可控制8个模拟量中的一个进入转换器中。ADC0809的精度为8位,转换时间约100μs,含锁存控制的8路多路开关,输出有三态缓冲器控制,单5V电源供电。
主要控制信号说明,如图所示,START是转换启动信号,高电平有效,ALE是3位通道选择地址(ADDC、ADDB、ADDA)信号的锁存信号。当模拟量送至某一输入端(如IN1或IN2等),由3位地址信号选择,而地址信号由ALE锁存;EOC是转换情况状态信号,当启动转换约100μs后,EOC产生一个负脉冲,以示转换结束:在EOC的上升沿后,若使输出使能信号OE为高电平,则控制打开三态缓冲器,把转换好的8位数据结果输至数据总线。至此ADC0809的一次转换结束。
图 ADC0809工作时序
(3)实验内容:利用QuartusⅡ对ADC0809进行Verilog HDL文本编辑输入和仿真测试;给出仿真波形。最后进行引脚锁定并进行测试,硬件验证电路对ADC0809的控制功能。
测试步骤:建议选择实验电路模式5由对应的电路图可见,ADC0809的转换时钟CLK已经事先接有750kHs的频率,引脚锁定为:START接PIO34、引脚号为49,OE(ENABLE)接PIO35、引脚号为50, EOC接PIO8、引脚号为15,ALE接PIO33、引脚号为48,状态机时钟CLK接clock0、引脚号为2,ADDA接PIO32、引脚号为46(ADDB和ADDC都接GND),ADC0809的8位输出数据线接PIO23~PIO16、引脚号为34、33、31、30、29、28、27、25,锁存输出Q显示于数码8/数码7(PIO47~PIO40、引脚号为65、64、63、61、60、58、57、56),
实验操作:将GW48-CK系统,左下角选择插针处的“转换结束”和“A/D使能”用跳线帽短接。下载ADC0809中的ADCINT.pof到实验板的目标器件EPM7128SLC84-15中;clock0的短路帽接可选12Hz、6MHz、65536Hz等频率;按动一次右侧的复位键;用螺丝刀旋转GW48系统左下角的电位器,以便为ADC0809提供变化的待测模拟信号(注意,这时必须在程序中的赋值:ADDA<=’1’,这样就能通过实验系统左下角的AIN1输入端与电位器相接,并将信号输入ADC0809的IN1)。这时数码管8和7将显示ADC0809采样输出并被锁存的数字值(16进制),数据来自EPM7128SLC84-15的输出。数码管2和1也将显示同样数据,此数据直接来自ADC0809的数据口。
(4)实验报告:根据以上的实验要求和实验内容写出实验报告。
【实验3程序】
module ADCINT (D,CLK,EOC,ALE,START,OE,ADDA,LOCK0,Q);
input[7:0] D;
input CLK,EOC; //CLK是转换工作时钟
output ALE,START,OE,ADDA,LOCK0;
output[7:0] Q; //0809的8位转换数据输出
reg ALE,START,OE,LOCK;
reg[2:0] current_state,next_state;
reg[7:0] REGL;
wire ADDA,LOCK0;
wire[7:0] Q;
parameter[2:0] st0 = 0; //定义各状态子类型
parameter[2:0] st1 = 1;
parameter[2:0] st2 = 2;
parameter[2:0] st3 = 3;
parameter[2:0] st4 = 4;
initial
begin
current_state<=st0;
next_state<=st0;
end
assign ADDA=1'b1,Q=REGL,LOCK0=LOCK ;//LOCK转换后数据输出锁存时钟信号
//模拟信号进入0809通道0;当ADDA <='1',则进入通道1 always @(current_state or EOC)
begin : COM
case(current_state) //规定各状态转换方式
st0 : //0809初始化
begin
ALE<=1'b0 ;
START<=1'b0 ;
LOCK<=1'b0 ;
OE<=1'b0 ;
next_state<=st1 ;
end
st1 : //启动采样
begin
ALE<=1'b1 ;
START<=1'b1 ;
LOCK<=1'b0 ;
OE<=1'b0 ;
next_state<=st2 ;
end
st2 : //测试EOC的下降沿begin
ALE<=1'b0 ;
START<=1'b0 ;
LOCK<=1'b0 ;
OE<=1'b0 ;
if(EOC==1'b1)
begin
next_state<=st3 ;
end
else
begin
next_state <= st2 ;
end
end
st3 :
begin
ALE<=1'b0 ;
START<=1'b0 ;
LOCK<=1'b0 ;
OE<=1'b1 ;
next_state <= st4 ;
end
st4 : //测试EOC的上升沿,=1表明转换结束begin
ALE<=1'b0 ;
START<=1'b0 ;
LOCK<=1'b1 ;
OE<=1'b1 ;
next_state<= st0 ;
end
default :
begin
next_state<= st0 ;
end
endcase
end
always @(posedge CLK)
begin : REG
current_state<=next_state ; //在时钟上升沿,转换至下一状态
end
always @(posedge LOCK) //此进程中,在LOCK的上升沿,将转换好的数据锁入begin : LATCH1
REGL <= D ;
end
endmodule
实验3引脚锁定图
VS (PIO44)
HS (PIO43)B (PIO42)G (PIO41)R (PIO40)
GND
PIO45
PIO46513
PS/2接口
VCC
J7
4接PC 机
串行通讯接口
接口电路
单片机接口电路
2
35RS-232B412MHZA
键
复位P34
P33
P32
X1
X2
P31
P30
P35
RST GND
1
2
3
4
56
7
8
9
10
VCC
PIO11
PIO12PIO13PIO14AT89C2051
EU3P37P10P11P12P13P14P15P16P17VCC 11121314151617181920
PIO15PIO24PIO25PIO26PIO27PIO28PIO29PIO30PIO31
7.2K P29->A14)
27512(PIN30->VCC,PIN3->A15,PIN29->WE)628128(PIN30->VCC,PIN3->A14,RAM/ROM
P29->WE)62256(PIN30->VCC,PIN3->A14,6264(PIN30->VCC,PIN29->WR)
PIN30->A17,PIN3->A15,PIN29->A14)29C040(PIN31->WE,PIN1->A18,PIN3->A15,PIN29->A14)27040(PIN31->A18,PIN30->A17,PIN29->A14)27020(PIN30->A17,PIN3->A15,P29->A14)27010(PIN30->VCC,PIN3->A15,R78 200
R77 200R76 200
10
5487
6
14
13321 视频接口VGA J6A18/A19A18/A15/WE PIO49VCC SLA17RAM_EN
VCC GND
SLRAM
PIO26PIO25PIO24PIO32PIO33PIO34PIO35PIO36PIO37PIO38PIO39PIO14PIO47PIO10PIO48PIO9PIO46PIO45PIO11PIO12PIO13PIO8PIO15PIO31PIO30PIO29PIO28PIO27
32
313029282726252423222120191817
16
151413121110987654321VCC GND
2708027040270202701027512272562764628128622566264VCC
A17/VCC WR/A14
A13A8A9A11OE A10CS1D7D6D5
D4D3GND
D2D1D0A0A1A2A3A4A5A6A7A12A14(A15)A16
10K VCC
VR1PIO31
PIO29PIO30PIO28PIO27PIO26PIO25PIO2413
1415164D7
D6D5D4D35D26D1D07PIO37
+5
JP2
51pFC27
JP2(COMP)
COMP LM311VCC
10K -12
+1248
23TL082/1
AIN0
AOUT
102
103
5.1K
R72765TL082/2
8
4
1
+12
-12
滤波0滤波1
FIT
COMM
EU2DAC0832
1181710
32WR1
FB
9
3
211IOUT1IOUT2
12/CS WR2XFER A GND D GND
VREF
8
VCC 20VCC
JP2(1/2,3/4)
D1PIO8
D2D3D4D5D6D7D8PIO9
PIO10
PIO11
PIO12
PIO15
PIO14
PIO13
实验电路结构图
NO.5
S P E A K E R
扬声器
FPGA/CPLD 目标芯片1
2
3
4
5
6
7
8
D16D15D14D13D12D11D10D9
PIO47-PIO44
PIO43-PIO40PIO39-PIO36PIO35-PIO32PIO31-PIO28PIO27-PIO24PIO23-PIO20PIO19-PIO16
译码器译码器译码器译码器译码器译码器译码器
译码器PIO15-PIO8PIO0
PIO1PIO2PIO3PIO4PIO5PIO6PIO7键1
键2键3键4键5键6键7键8P I O 8J P 2(5/6)P I O 8
(23)(24)1216272610C L O C K 750K H Z A F I T
102
C 30103
C 29P I O 37
P I O 35
C O M M
C O M P
A D E O C A D E N
J P 2
20
1816141210864219
1715131197531
021+5V A I N 0A I N 1r e f (-)r e f (+)I N -1I N -0692225717
1415818192021E U 1A D C 0809P I O 16
P I O 17P I O 18P I O 19P I O 20P I O 21P I O 22P I O 23P I O 32
P I O 33P I O 35
P I O 34
m s b 2-1
2-22-32-42-52-62-7l s b 2-8E O C A D D -A A D D -B A D D -C A L E E N A B L E S T A R T
供参考实验报告范例
下面以1位二进制全加器的设计为例,给出一个实验报告范例,以供参考。
实验X 1位二进制全加器的设计
1. 实验目的
(1) 学习ispEXPERT软件的基本使用方法。
(2) 学习GW48-CK EDA实验开发系统的基本使用方法。
(3) 了解VHDL程序的基本结构。
2. 实验内容
设计并调试好一个1位二进制全加器,并用GW48-CK EDA实验开发系统(拟采用的实验芯片的型号可为ispLSI1032E PLCC-84或EPF10K10LC84-3或XCS05/XL PLCC84)进行系统仿真、硬件验证。设计1位二进制全加器时要求先用基本门电路设计一个1位二进制半加器,再由基本门电路及1位二进制半加器构成全加器。
3. 实验条件
(1) 开发软件:Lattice ispEXPERT。
(2) 实验设备:GW48-CK EDA实验开发系统。
(3) 拟用芯片:ispLSI1032E PLCC-84。
4. 实验设计
1) 系统的原理框图
根据数字电子技术的知识,1位二进制全加器可以由两个1位的半加器构成,而1位半加器可以由如图7.1所示的门电路构成。由两个1位的半加器构成的全加器如图7.2所示。
图7.1 1位半加器逻辑原理图
图7.2 1 位全加器逻辑原理图
2) VHDL源程序
--或门的逻辑描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY OR2 IS
PORT(A,B:IN STD_LOGIC
C:OUT STD_LOGIC);
END ENTITY OR2;
ARCHITECTURE ART1 OF OR2 IS
BEGIN
C<=A OR B;
END ARCHITECTURE ART1;
--半加器的逻辑描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY H_ADDER IS
PORT(A,B:IN STD_LOGIC;
SO ,CO:OUT STD_LOGIC);
END ENTITY H_ADDER;
ARCHITECTURE ART2 OF H_ADDER IS BEGIN
SO<=(A OR B) AND (A NAND B);
CO<=NOT (A NAND B);
END ARCHITECTURE ART2;
--全加器的逻辑描述
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY F_ADDER IS
PORT(AIN,BIN,CIN:IN STD_LOGIC;SUM ,COUT:OUT STDLOGIC);
END ENTITY F_ADDER IS
ARCHITECTURE ART3 OF F_ADDER IS COMPONENT H_ADDER
PORT(A,B:IN STD_LOGIC;
SO,CO:OUT STD_LOGIC);
END COMPONENT H_ADDER;
COMPONENT OR2 IS
PORT(A,B:IN STD_LOGIC;
C:OUT STD_LOGIC);
END COMPONENT OR2;
SIGNAL S1,S2,S3:STD_LOGIC;
BEGIN
U1:H_ADDER PORT MAP(A=>AIN,B=>BIN,CO=>S1,SO=>S2);U2:H_ADDER PORT MAP(A=>S2,B=>CIN,SO=>SUM,CO=>S3);U3:OR2 PORT MAP(A=>S1,B=>S3,C=>COUT);
END ARCHITECTURE ART3;
3) 波形仿真文件
用于波形仿真的ABEL测试文件F_ADDER.ABV如下:
MODULE F_ADDER;
AIN,BIN,CIN,SUM,COUT PIN;
X=.X.;
TEST_VECTORS
([AIN,BIN,CIN]->[SUM,COUT]);
[0,0,0]->[X,X];
[0,0,1]->[X,X];
[0,1,0]->[X,X];
[0,1,1]->[X,X];
[1,0,0]->[X,X];
[1,0,1]->[X,X];
[1,1,0]->[X,X];
[1,1,1]->[X,X];
END;
4) 管脚锁定文件
管脚锁定文件F_ADDER.PPN的设计过程如表7.1所示。
表7.1 F_ADDER.PPN的设计过程
验证设备:GW48-CK;实验芯片:ispLSI1032E-70LJ84;实验模式:NO.5 ;模式图及管脚对应表见图5.10,表5.3
根据表7.1,可得到管脚锁定文件F_ADDER.PPN如下:
//F_ADDER.PPN
//PART:ispLSI1032E-70LJ84
//FORMAT:PINNAME PINTYPE LOCK
AIN IN 26
BIN IN 27
CIN IN 28
SUM OUT 34
COUT OUT 35
5. 实验结果及总结
1) 系统仿真情况
系统功能仿真结果与时序仿真结果分别如图7.3、7.4所示。
图7.3 系统功能仿真结果
图7.4 系统时序仿真结果
从系统仿真结果(本仿真结果可通过同时按下“ALT+Print Screen”键抓取当前屏幕信息放入剪贴板中,再在WORD等文档中通过粘贴的方法获得)可以看出,本系统完全符合设计要求。同时从系统时序仿真结果可以看出,从输入到输出有一定的延时,在20 ns左右,这正是器件延时特性的反映。
2) 硬件验证情况
AIN接键1,BIN接键2,CIN接键3,SUM接发光二极管D1,COUT接发光二极管D2,一位二进制全加器的硬件验证结果表如表7.2所示。从实验结果可以看出,本系统完全符合设计要求。
表7.2 F_ADDER的硬件验证结果
3) 实验过程中出现的问题及解决办法
经过源程序的编辑和编译、逻辑综合、逻辑适配、编程下载成功后,在EDA实验开发系统进行实验时却发现实验结果不对。