ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CUMT矿大----电路与数字系统实验四 计数、译码、显示的HDL设计

2021-12-13 20:33:04  阅读:383  来源: 互联网

标签:fp end inclk .. hw ---- lw 矿大 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有