CUMT矿大----电路与数字系统实验四 计数、译码、显示的HDL设计
作者:互联网
软件:Quartus II 9.0 (64-Bit) AHDL语言
看完觉得不错的点个赞呗╰(*°▽°*)╯不要白嫖啊
一、60进制计数器(静态显示)
分频模块(输入时钟40MHZ)
subdesign fp
(
inclk:input;
outputf:output;
)
variable
fp[24..0]:dff;
f:dff;
begin
fp[].clk=inclk;
f.clk=inclk;
if fp[]==19999999 then
fp[]=0;
f=!f;
else
fp[]=fp[]+1;
f=f;
end if;
outputf=f;
end;
60进制计数器模块
subdesign 59to0
(
inclk:input;
outa[3..0],outb[3..0]:output;
)
variable
hw[3..0]:dff;
lw[3..0]:dff;
begin
hw[].clk=inclk;
lw[].clk=inclk;
if(hw[]==5)and(lw[]==9)then
hw[]=0;
lw[]=0;
elsif lw[]==9 then
lw[]=0;
hw[]=hw[]+1;
else
hw[]=hw[];
lw[]=lw[]+1;
end if;
outa[]=hw[];
outb[]=lw[];
end;
译码显示模块(静态显示)
subdesign xianshi
(
a[3..0],b[3..0]:input;
outa[6..0],outb[6..0]:output;
)
begin
table
a[3..0]=>outa6,outa5,outa4,outa3,outa2,outa1,outa0;
H"0"=>0,1,1,1,1,1,1;
H"1"=>0,0,0,0,1,1,0;
H"2"=>1,0,1,1,0,1,1;
H"3"=>1,0,0,1,1,1,1;
H"4"=>1,1,0,0,1,1,0;
H"5"=>1,1,0,1,1,0,1;
H"6"=>1,1,1,1,1,0,1;
H"7"=>0,0,0,0,1,1,1;
H"8"=>1,1,1,1,1,1,1;
H"9"=>1,1,0,1,1,1,1;
end table;
table
b[3..0]=>outb6,outb5,outb4,outb3,outb2,outb1,outb0;
H"0"=>0,1,1,1,1,1,1;
H"1"=>0,0,0,0,1,1,0;
H"2"=>1,0,1,1,0,1,1;
H"3"=>1,0,0,1,1,1,1;
H"4"=>1,1,0,0,1,1,0;
H"5"=>1,1,0,1,1,0,1;
H"6"=>1,1,1,1,1,0,1;
H"7"=>0,0,0,0,1,1,1;
H"8"=>1,1,1,1,1,1,1;
H"9"=>1,1,0,1,1,1,1;
end table;
end;
生成独自的模块后照着上图连接
二、12归1(动态显示)
分频模块
subdesign fp
(
inclk:input;
outputf:output;
)
variable
fp[23..0]:dff;
f:dff;
begin
fp[].clk=inclk;
f.clk=inclk;
if fp[]==1999999 then
fp[]=0;
f=!f;
else
fp[]=fp[]+1;
f=f;
end if;
outputf=f;
end;
12归1模块
subdesign 12to1
(
inclk:input;
outa[3..0],outb[3..0]:output;
)
variable
hw[3..0]:dff;
lw[3..0]:dff;
begin
hw[].clk=inclk;
lw[].clk=inclk;
if(hw[]==1)and(lw[]==2)then
hw[]=0;
lw[]=1;
elsif lw[]==9 then
lw[]=0;
hw[]=hw[]+1;
else
hw[]=hw[];
lw[]=lw[]+1;
end if;
outa[]=hw[];
outb[]=lw[];
end;
译码显示模块(动态显示)
subdesign dongtai
(
inclk,a[3..0],b[3..0]:input;
outa[6..0],bitout[1..0]:output;
)
variable
mda[14..0]:dff;
mseg[3..0],bitout[1..0]:dff;
st[1..0]:dff;
fpa:dff;
begin
fpa.clk=inclk;
mda[].clk=inclk;
mseg[].clk=fpa;
st[].clk=fpa;
bitout[].clk=fpa;
if mda[]==19999 then
mda[]=0;
fpa=!fpa;
else
mda[]=mda[]+1;
fpa=fpa;
end if;
case st[] is
when 0=>
mseg[]=b[];
bitout[]=1;
st=1;
when 1=>
mseg[]=a[];
bitout[]=2;
st=0;
end case;
table
mseg[]=>outa[];
h"0"=>h"3f";
h"1"=>h"06";
h"2"=>h"5b";
h"3"=>h"4f";
h"4"=>h"66";
h"5"=>h"6d";
h"6"=>h"7d";
h"7"=>h"07";
h"8"=>h"7f";
h"9"=>h"6f";
end table;
end;
生成独自的模块后照着上图连接
标签:fp,end,inclk,..,hw,----,lw,矿大,HDL 来源: https://blog.csdn.net/weixin_52114591/article/details/121912826