顶层为原理图的能显示16进制减法计数器设计Word格式文档下载.docx
《顶层为原理图的能显示16进制减法计数器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《顶层为原理图的能显示16进制减法计数器设计Word格式文档下载.docx(11页珍藏版)》请在冰豆网上搜索。
![顶层为原理图的能显示16进制减法计数器设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2023-2/1/e0d193ed-c462-4d01-a07f-ef73764cee64/e0d193ed-c462-4d01-a07f-ef73764cee641.gif)
(5)根据所给时钟频率设计记数分频器和扫描分频器(硬件验证实验装置的输入时钟频率为10MHZ,也可查附录表1获得)。
其中16进制减法计数器(jsq_16)可通过ProjectNavigator界面中菜单ProjectAddSource从实验四中将练习时已生成的16进制减法计数器Verilog加入(调入)。
3)在右面界面的XSQ原理图图板中完成模块的各设计模块的连接。
如图6-1。
保存后各设计模块由原来的与XSQ原理图同级文件成为XSQ原理图下级文件。
见Sources子窗口。
图6-1
图6-2
图6-3
4)给输入输出端口定义引脚序号
如果不给芯片的定义I/O引脚序号,则软件编译时会自动生成设计的I/O引脚表,设计者根据I/O引脚表通过连接线将芯片端口与外围器件连接。
在给定的硬件验证实验装置LP2900上芯片与外围器件的接口引脚已固定,只能自己收到定义I/O引脚。
在ProjectNavigator界面中选菜单ProjectNewSource,在file栏中输入文件名,左栏选ImplementationConstraintsFile,然后点击“下一步”,在SourceFile中选设计顶层文件名,点击“下一步”此时在sourcesinProject中生成后缀名为.ucf文件,选中.ucf文件,在ProcessesforSource中双击
,如果设计无误,则会弹出.ucf文件窗口如图6-5,在图6-6窗口中通过DesignObjectList–I/Opin表和PackagePinforxc3s50-TQ144或DeveicArchitectureforxc3s50-TQ144进行人工定义引脚,为了与硬件外围设备相匹配,要根据硬件设备(例如按键、数码管、LED发光二极管等)与芯片引脚连接表(见附录表1)进行定义可编程器件引脚。
如要使在LP2900实验装置中en使能端通过按键SW1控制,由附录表查得按键SW1与芯片引脚P20相连,则应定义en引脚为P20。
全部定义结束后,保存一下。
对于引脚定义不要选用专用引脚(例VCC、GND等),时钟信号引脚要选用I/O/GCK(GlobalClock)全局时钟信号。
在PackagePinLegend窗口说明了PackagePinforxc3s50-TQ144芯片引脚中引脚符号所代表的含义,请仔细阅读。
图6-5
5)硬件验证
现要将设计仿真成功,引脚定义完成的能显示16进制减法计数器的设计下载到芯片中。
1.回到ProjectNavigator窗口,在Source子窗口中选中顶层原理图文件名,在Processes子窗口中双击GenerateProgrammingFile下的ConfigureDevice(Impace),软件自动进行综合(Synthesize)、设计实现(Implement)、生成可编程文件。
设计实现包括编译Translate、映射Map、布局布线Place&
Route,同时生成相应的文本文件。
如果能通过综合和设计实现,会弹出如图6-6对话,
2.选择ConfiguredevicesusingBoundary-Scan(JTAG),点击“完成”,软件通过并口线与硬件实验装置联接,联接正确,弹出图6-8对话框,运行文件中的项目位流文件(注意要进入所设计的工程项目路径),则弹出图框如图6-9,在图6-9中芯片图下方有芯片型号、位流文件名(例:
xsq.bit)。
选中芯片按右键选“Programming”,弹出对话图框如图6-10选“OK”。
如果设计正确则会将设计文件下载到可编程芯片中。
硬件装置根据设计功能正常运行。
如果硬件运行不正常,要根据实际情况分析、解决问题。
图6-7
图6-8
图6-9
图6-10
【实验现象与结果】
◆程序代码如下:
<
KZ.v>
moduleKZ(clk,en,A2,A1,Q,D);
inputclk;
inputen;
input[3:
0]A2,A1;
output[3:
0]Q;
output[2:
0]D;
regcount_for_clk=0;
reg[3:
reg[2:
initialcount_for_clk<
=0;
always@(posedgeclk)begin
count_for_clk<
=count_for_clk+1;
if(count_for_clk==1'
b1)
=1'
b0;
end
initialbeginQ<
=4'
b0000;
D<
=3'
bz;
end
if(en==1'
b0)begin
Q<
else
case(count_for_clk)
0:
beginQ<
=A2;
D<
b100;
1:
=A1;
b101;
endcase
endmodule
decode.v>
moduledecode(A,Q);
0]A;
output[6:
reg[6:
always@(A)begin
case(A)
4'
b0000:
Q<
=7'
b0111111;
b0001:
b0000110;
b0010:
b1011011;
b0011:
b1001111;
b0100:
b1100110;
b0101:
b1101101;
b0110:
b1111101;
b0111:
b0000111;
b1000:
b1111111;
b1001:
b1101111;
default:
b0000000;
endcase
jsq_16.v>
modulejsq_16(en,clk,Q);
initialQ<
b1111;
always@(posedgeclk)begin
if(en==1'
b0)Q<
elseif((en==1'
b1)&
&
(Q==4'
b0000))
=Q-1;
gdf.v>
modulegdf(Q,H,L);
0]H;
0]L;
0]H,L;
always@(Q)begin
if(Q<
4'
b1010)begin
H<
L<
=Q;
elsebegin
=Q-10;
b0001;
fp1.v>
modulefp1(clk,cp);
outputcp;
regcp;
reg[13:
0]cnt;
initialbegin
cnt<
cp<
always@(posedgeclk)begin
=cnt+1;
if((cnt>
=0)&
(cnt<
=4999))cp<
=1'
b1;
elseif((cnt>
=5000)&
=9999))cp<
if(cnt>
9998)cnt<
fp2.v>
modulefp2(clk,cp);
reg[23:
=4999999))cp<
=5000000)&
=9999999))cp<
9999998)cnt<
◆自定义管脚,查附录后可得:
七段数码管选用管脚为:
代號
A
B
C
D
E
F
G
dp
裝置
七段顯示器
腳位
Pin55
Pin57
Pin60
Pin65
Pin69
Pin70
Pin73
Pin74
En初始化管脚为:
SW1
SW2
SW3
SW4
SW5
SW6
SW7
SW8
PushButton
Pin20
Pin23
Pin25
Pin27
Pin30
Pin32
Pin35
Pin40
Clk管脚为:
OSC
f=10M
Clk0
Pin125
高低选管脚为:
DE1
DE2
DE3
74138
Pin76
Pin77
Pin78
◆实验现象,最后出现PROGRAMESUCCESSFUL即下载成功,如图6-11
图6-11
◆此时,可以在实验板上看到数码管显示的减法器。