第一部分CPLD器件及开发系统的使用
end if; if fh==0 then
qout[]=(0,mem.qout[])+1000; else
qout[]=1000-(0,mem.qout[]); end if; end ;
sin.mif文件如下: Width=10; DEPTH=255;
ADDRESS_RADIX=DEC; DATA_RADIX=DEC; CONTENT BEGIN 0 : 0; 2 : 35; 4 : 70; 8 : 139;
1 : 17; 3 : 52; 5 : 87; 7 : 122; 9 : 156; 11 : 191; 13 : 225; 15 : 259; 17 : 292; 19 : 326; 21 : 358; 23 : 391; 25 : 423; 27 : 454; 29 : 485; 31 : 515; 33 : 545; 35 : 574; 37 : 602; 39 : 629;
41 : 656;
158
6 : 105; 10 : 174; 12 : 208; 14 : 242; 16 : 276; 18 : 309; 20 : 342; 22 : 375; 24 : 407; 26 : 438; 28 : 469; 30 : 500; 32 : 530; 34 : 559; 36 : 588; 38 : 616; 40 : 643;
第一部分CPLD器件及开发系统的使用
42 : 669; 44 : 695; 46 : 719; 48 : 743; 50 : 766; 52 : 788; 54 : 809; 56 : 829; 58 : 848; 60 : 866; 62 : 883; 64 : 899; 66 : 914; 68 : 927; 70 : 940; 72 : 951; 74 : 961; 76 : 970; 78 : 978; 80 : 985; 82 : 990; 84 : 995; 86 : 998; 88 : 999; 90 : 1000; 92 : 999; 94 : 998; 96 : 995; 98 : 990; 100 : 985; 102 : 978; 104 : 970; 106 : 961; 108 : 951;
43 : 682; 45 : 707; 47 : 731; 49 : 755; 51 : 777; 53 : 799; 55 : 819; 57 : 839; 59 : 857; 61 : 875; 63 : 891; 65 : 906; 67 : 921; 69 : 934; 71 : 946; 73 : 956; 75 : 966; 77 : 974; 79 : 982; 81 : 988; 83 : 993; 85 : 996; 87 : 999; 89 : 1000; 91 : 1000; 93 : 999; 95 : 996; 97 : 993; 99 : 988; 101 : 982; 103 : 974; 105 : 966; 107 : 956;
109 : 946;
159
第一部分CPLD器件及开发系统的使用
110 : 940; 112 : 927; 114 : 914; 116 : 899; 118 : 883; 120 : 866; 122 : 848; 124 : 829; 126 : 809; 128 : 788; 130 : 766; 132 : 743; 134 : 719; 136 : 695; 138 : 669; 140 : 643; 142 : 616; 144 : 588; 146 : 559; 148 : 530; 150 : 500; 152 : 469; 154 : 438; 156 : 407; 158 : 375; 160 : 342; 162 : 309; 164 : 276; 166 : 242; 168 : 208; 170 : 174; 172 : 139; 174 : 105; 176 : 70;
111 : 934; 113 : 921; 115 : 906; 117 : 891; 119 : 875; 121 : 857; 123 : 839; 125 : 819; 127 : 799; 129 : 777; 131 : 755; 133 : 731; 135 : 707; 137 : 682; 139 : 656; 141 : 629; 143 : 602; 145 : 574; 147 : 545; 149 : 515; 151 : 485; 153 : 454; 155 : 423; 157 : 391; 159 : 358; 161 : 326; 163 : 292; 165 : 259; 167 : 225; 169 : 191; 171 : 156; 173 : 122; 175 : 87; 177 : 52;
160
第一部分CPLD器件及开发系统的使用
178 : 35; 180 : 0;
179 : 17;
正弦波的精度与所存储的数据数量有关,数据量越大波形越细腻。指定
器件、分配管脚、编译,如果硬件实验箱有十位D/A转换,就可以下载试验。 2、LPM_RAM的使用
在maxplus2\\maxp2lib\\mega_lpm库中目前有三种模块可以选择,分别是LPM_RAM_IO、LPM_RAM_DQ、LPM_RAM_DP。它们的主要区别是LPM_RAM_IO输入、输出为单一的双向I/O口,输入、输出共用一套地址线,使用方式与普通RAM(6116)很类似。LPM_RAM_DQ输入、输出共用双向I/O口,但地址线是两套,即数据输入时使用输入地址线,输出时使用输出地址线,由于地址线分开使用可以部分提高读写速度,简化设计。LPM_RAM_DP可以构建双端口RAM,输入、输出完全分开可以充分发挥CPLD/FPGA处理速度高,以及并行处理的特点,提高数据的吞吐量。
LPM_RAM使用如下图所示,其参数的设定和LPM_ROM基本相同,这里不在详述。下面就LPM_RAM的典型应用以举例的方式介绍。
(1)LPM_RAM_IO模块的使用:由于LPM_RAM_IO的读写方式与普通RAM的读写类似,可以利用LPM_RAM_IO构建单片机的外扩RAM。如图5-16所示设置LPM_RAM_IO的参数化框,其设置方式与LPM_ROM的设置类似,但有一点需要注意的是与“dio[]”相连的一定要为双向I/O。LPM_RAM_IO的读写可以为同步方式,也可以为异步方式,它们之间的区别是否使用同步时钟,异步方式控制线的描述如下:
memenab we
outenab
功能
L X X 高阻状态 H L H
读
H H L 写
图5-16 LPM_RAM_IO的使用
161
第一部分CPLD器件及开发系统的使用
将图5-16的电路形成默认的“yy.inc”文件,再用语言描述将锁存器加入即可形成一个标准的4K RAM。语言描述如下: INCLUDE \SUBDESIGN DPJRAM
(ale,rd,wr,pc[3..0],CS:input;
pa7,Pa6,pa5,pa4,pa3,pa2,pa1,pa0 :bidir; ) variable myy: yy; md[7..0]:LATCH; begin
md[].ENA=ale; md[]=pa[7..0]; myy.ad[7..0]=md[]; myy.ad[11..8]=pc[3..0]; myy.rd=rd; myy.we=wr; myy.cs=cs;
pa[7..0]=myy.dio[]; end;
上面的程序采用AHDL语言编写,用VHDL语言编写略有差别,这里不在介绍。将上面的程序形成默认的符号后,与8051单片机的连接方式如图5-17所示:其中ale、rd、wr分别与单片机的ALE、RD、WR相对应,pc[3..0]与单片机的P2口的低四位对应,pa0—pa7与单片机的P0对应。
图5-17 DPJRAM与单片机的连接
162