顶层为原理图的能显示16进制减法计数器设计.docx
《顶层为原理图的能显示16进制减法计数器设计.docx》由会员分享,可在线阅读,更多相关《顶层为原理图的能显示16进制减法计数器设计.docx(11页珍藏版)》请在冰豆网上搜索。
顶层为原理图的能显示16进制减法计数器设计
顶层为原理图的能显示16进制减法计数器设计
【实验内容】
1、用Verilog设计一个二选一电路,并用ModelSimSimulator仿真验证。
要求该二选一电路能实现16进制数的两位数据串行输出(或称动态输出)。
(在图6-1中为KZ模块,其中Q(3:
0)为数据输出信号,D(2:
0)为输出位选通信号)。
2、用Verilog设计一个16进制减法器,并用ModelSimSimulator仿真验证。
3、用Verilog设计一个共阴极7段译码电路,并用ModelSimSimulator仿真验证。
4、设计一个能显示15到0减法计数器顶层为原理图电路。
用ModelSimSimulator仿真验证。
5、设计一个能将一个输入总线数值为0000到1111的分成输出为个、十位的
二个总线信号(个位为0000到1001,十位为0000到0001)。
6、学习根据硬件实验装置外围电路与可编程器件引脚连接关系的附录表1
(或所选硬件实验装置的芯片与外围电路连接附录表)定义芯片的I/O管脚,并将所设计16进制减法计数器下载到可编程器件芯片中去,通过硬件实验装置验证设计结果。
7、掌握数据并行输入并行输出,串行输入并行输出及并行输入串行输出的设计电路。
本设计中控制电路为数据并行输入串行输出。
【实验步骤】
新建一个项目名TEST_6,顶层为原理图,原理图名为XSQ,可编程芯片
选SPARTAN3系列中XC3S50-TQ144(或根据所选硬件装置上的芯片系列型号)。
1)分别用Verilog设计下层各模块:
(1)二选一扫描电路(KZ);
(2)共阴极7段译码电路(decode);
(3)16进制减法计数器(jsq_16);
(4)将十六进制分成十进制的高低位(个、十位)(gdf);
(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
【实验现象与结果】
◆程序代码如下:
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:
0]Q;
reg[2:
0]D;
initialcount_for_clk<=0;
always@(posedgeclk)begin
count_for_clk<=count_for_clk+1;
if(count_for_clk==1'b1)
count_for_clk<=1'b0;
end
initialbeginQ<=4'b0000;
D<=3'bz;end
always@(posedgeclk)begin
if(en==1'b0)begin
Q<=4'b0000;
D<=3'bz;end
else
case(count_for_clk)
0:
beginQ<=A2;D<=3'b100;end
1:
beginQ<=A1;D<=3'b101;end
endcase
end
endmodule
moduledecode(A,Q);
input[3:
0]A;
output[6:
0]Q;
reg[6:
0]Q;
always@(A)begin
case(A)
4'b0000:
Q<=7'b0111111;
4'b0001:
Q<=7'b0000110;
4'b0010:
Q<=7'b1011011;
4'b0011:
Q<=7'b1001111;
4'b0100:
Q<=7'b1100110;
4'b0101:
Q<=7'b1101101;
4'b0110:
Q<=7'b1111101;
4'b0111:
Q<=7'b0000111;
4'b1000:
Q<=7'b1111111;
4'b1001:
Q<=7'b1101111;
default:
Q<=7'b0000000;
endcase
end
endmodule
modulejsq_16(en,clk,Q);
inputen;
inputclk;
output[3:
0]Q;
reg[3:
0]Q;
initialQ<=4'b1111;
always@(posedgeclk)begin
if(en==1'b0)Q<=4'b1111;
elseif((en==1'b1)&&(Q==4'b0000))
Q<=4'b1111;
else
Q<=Q-1;
end
endmodule
modulegdf(Q,H,L);
input[3:
0]Q;
output[3:
0]H;
output[3:
0]L;
reg[3:
0]H,L;
always@(Q)begin
if(Q<4'b1010)begin
H<=4'b0000;
L<=Q;
end
elsebegin
L<=Q-10;
H<=4'b0001;
end
end
endmodule
modulefp1(clk,cp);
inputclk;
outputcp;
regcp;
reg[13:
0]cnt;
initialbegin
cnt<=0;
cp<=0;
end
always@(posedgeclk)begin
cnt<=cnt+1;
if((cnt>=0)&&(cnt<=4999))cp<=1'b1;
elseif((cnt>=5000)&&(cnt<=9999))cp<=1'b0;
if(cnt>9998)cnt<=0;
end
endmodule
modulefp2(clk,cp);
inputclk;
outputcp;
regcp;
reg[23:
0]cnt;
initialbegin
cnt<=0;
cp<=0;
end
always@(posedgeclk)begin
cnt<=cnt+1;
if((cnt>=0)&&(cnt<=4999999))cp<=1'b1;
elseif((cnt>=5000000)&&(cnt<=9999999))cp<=1'b0;
if(cnt>9999998)cnt<=0;
end
endmodule
◆自定义管脚,查附录后可得:
七段数码管选用管脚为:
代號
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
◆此时,可以在实验板上看到数码管显示的减法器。