其他分享
首页 > 其他分享> > CUMT矿大----电路与数字系统实验四 计数、译码、显示的HDL设计

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