实用多功能数字时钟设计verilog汇总Word文件下载.docx
《实用多功能数字时钟设计verilog汇总Word文件下载.docx》由会员分享,可在线阅读,更多相关《实用多功能数字时钟设计verilog汇总Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。
数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
VerilogHDL语言具有下述描述能力:
设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。
所有这些都使用同一种建模语言。
此外,VerilogHDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
VerilogHDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。
因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。
语言从C编程语言中继承了多种操作符和结构。
VerilogHDL提供了扩展的建模能力,其中许多扩展最初很难理解。
但是,VerilogHDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。
当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
(2)Modelsim简介
Modelsim仿真工具是Model公司开发的。
它支持Verilog、VHDL以及他们的混合仿真,它可以将整个程序分步执行,使设计者直接看到他的程序下一步要执行的语句,而且在程序执行的任何步骤任何时刻都可以查看任意变量的当前值,可以在Dataflow窗口查看某一单元或模块的输入输出的连续变化等,比quartus自带的仿真器功能强大的多,是目前业界最通用的仿真器之一。
(3)Quartus工程说明
创建工程时,路径中不允许有中文。
选择芯片系列:
CycloneII
选择芯片型号:
EP2C8Q208C8
其余直接下一步。
(创建的工程文件名为:
*.qpf文件)
与工程设置:
Assignments->
Settings
弹窗右上角:
Device…
DeviceandPinOptions->
Configuration->
Useconfigurationdevice:
EPCS1
Dual-PurposePins->
nCEO:
UseasregularI/O
创建Verilog文件,和BlockDiagram文件。
完成编译后,下载。
编译:
Processing->
StartCompilation
引脚分配:
PinPlanner
下载程序:
Tools->
Programmer->
HardwareSetup…:
选择对应的下载方式
Mode:
JATG
注意文件名后缀为:
*.sof
并勾选:
Program/Configure
连接下载器线,和USB电源线,点击“Start”下载。
Progress:
绿色100%,完成。
该下载方式:
掉电后消失,须重新下载。
3、硬件设计
(1)主要部件电路图
按键电路图
蜂鸣器电路图
(2)硬件配置
硬件搭建图
引脚配置图
4、软件设计
(1)Modelsim仿真
1.主程序
moduleled(clk,clr,miao,fen1,fen2,shi1,shi2,a,jiaos,jiaof,Ring,
sel,seg);
inputclk,clr;
inputjiaos,jiaof,sel;
outputmiao,fen1,fen2,shi1,shi2,seg;
reg[3:
0]fen1,fen2,shi1,shi2;
regmiao;
0]sfbz;
outputreg[7:
0]a;
outputregRing;
outputreg[1:
0]sel;
outputreg[6:
0]seg;
always@(posedgeclk)
begin
if(clr)
miao<
=0;
else
miao=~miao;
end
always@(posedgemiaoorclr)
a<
elseif(a==8'
d59)
a<
else
=a+1;
if(clr)
fen1<
elseif(jiaof&
&
fen1<
4'
d9)
=fen1+1;
fen1==4'
elseif(fen1==4'
d9&
a==8'
elseif(a==8'
d59&
(a+1)==8'
d60)
elsefen1<
=fen1;
fen2<
fen2<
5)
=fen2+1;
elseif(fen2==5&
fen1==9&
elseif(fen1==9&
else
=fen2;
always@(posedgemiaoorclr)
if(clr)
shi1<
elseif(jiaos&
shi1=shi1+1;
shi1==4'
elseif(shi1==8'
d3&
fen1==8'
fen2==8'
d5&
shi2==4'
d2)
begin
shi2<
end
elseif(fen1==8'
shi1==8'
d9)
=shi1+1;
elseshi1<
=shi1;
shi2=shi2+1;
shi2==2)
=shi2+1;
elseshi2<
=shi2;
always@(fen1orfen2ormiao)
if(fen1==8'
d5)
case(a)
8'
d51:
Ring=1;
d53:
d55:
d57:
d59:
default:
Ring=1'
b0;
endcase
Ring=1'
endmodule
2.测试程序
moduleledtest1;
regclk,clr;
wire[3:
wiremiao;
wireRing;
wire[7:
regjiaos,jiaof;
ledu1(clk,clr,miao,fen1,fen2,shi1,shi2,a,jiaos,jiaof,Ring);
initial
#10clk=1;
#10clr=1;
#10clr=0;
#100jiaof=0;
#100jiaos=0;
#100000jiaof=1;
#100000jiaos=1;
clr=0;
always#10clk=~clk;
3.Modelsm程序仿真
4.程序仿真波形图
(2)Quartus仿真
moduleled(clk,clr,miao,jiaos,jiaof,Ring,sel,seg);
inputjiaos,jiaof;
outputmiao,seg,sel;
reg[21:
0]div;
regmiao,clkd;
reg[7:
0]seg;
reg[3:
0]sel,nsel;
0]sfbz;
always@(posedgeclk)
if(~clr)
div<
elseif(div==21'
b111111111111111111111)
=div+1;
always@(posedgeclk)
if(~clr)
clkd<
elseif(div==21'
=~clkd;
elseclkd<
=clkd;
always@(posedgeclkd)
always@(posedgemiaoornegedgeclr)
elseif(!
jiaof&
=fen1+