Verilog HDL的走马灯以及计时器实现

小编 2026-06-26 阅读:782 评论:0
EDA课程实验的内容分享 跑马灯设计 设计一10个输入、8个输出的电路,10个输入中,2个输入作为模式控制,8个输入作为并行输入端 2个输入端控制4种显示模式: ① 模式1:按照1、2、3、...

EDA课程实验的内容分享

跑马灯设计

设计一10个输入、8个输出的电路,10个输入中,2个输入作为模式控制,8个输入作为并行输入端
2个输入端控制4种显示模式:
① 模式1:按照1、2、3、4、5、6、7、8的顺序依次点亮所有灯;然后再按1、2、3、4、5、6、7、8的顺序依次熄灭所有灯,间隔时间按时钟信号的四分频设计。
② 模式2:并行输入8位数据并且输出。
③ 模式3:每1个时钟将输出取反,间隔时间按时钟信号的二分频设计。
④ 模式4:按向左移循环点亮的方式进行变化。

module marquee(Mode,In,Clk,Out,Reset);
    input [1:0]Mode;
    input [7:0]In;
    input Clk,Reset;
    output [7:0]Out;
    reg [7:0]Out;
    reg [1:0]cnt_4=0;
    reg cnt_2=0,cnt_o_4,cnt_o_2;
    reg step;
    //分频
    always @(posedge Clk,posedge Reset)
        begin
            if(Reset)begin cnt_o_4=0;cnt_4=0;cnt_o_2=0;cnt_2=0; end
            else
            begin
            if(cnt_4!=\'b11)
            begin cnt_4=cnt_4+1;cnt_o_4=0; end
            else
            begin cnt_4=0;cnt_o_4=1; end
            if(cnt_2!=1)
            begin cnt_2=cnt_2+1;cnt_o_2=0; end
            else
            begin cnt_2=0;cnt_o_2=1; end
            end
        end    
always @(posedge Clk)
        begin
            case(Mode)
            0:
            if(cnt_o_4)
            begin
                if(Out==8\'b11111111)step=0;
                if(!Out)step=1;
                Out={step,Out[7:1]};
            end
            1:Out={In};
            2:
            if(cnt_o_2)
            Out=~Out;
            3:Out={Out[6:0],Out[7]};
            endcase
        end
endmodule

注意点

  • 分频分别使用了两个寄存器来实现二分频和四分频
  • 依次点亮的实现以及移位的实现都是通过使用{}运算符来实现

计时器设计

设计一个计时器,4位数码管通电后以mmss格式显示计时时间(注:mm代表“分”,ss代表“秒”)

module cp4(number_out,SI,LT_N,BI_N,LE,Clk,Reset);
    output [6:0] number_out;
    output [3:0]SI;
    output LT_N,BI_N,LE;
    input Clk,Reset;
    reg [1:0]count=0;
    reg [9:0]time_count=0;
    reg t_o;
    reg [3:0]Out;
    reg [3:0]M1;
    reg [3:0]M2;
    reg [3:0]S1;
    reg [3:0]S2;
    reg [3:0]SI;
    assign LT_N=1;
    assign BI_N=1;
    assign LE=0;
    always@(posedge Clk or posedge Reset)
        begin
            if(Reset)
            begin 
            time_count=0;t_o=0;
            end
            else if(time_count==999)
            begin t_o=1;time_count=0; end
            else
            begin time_count=time_count+1;t_o=0; end
        end
    always@(posedge Clk or posedge Reset)
        begin
            if(Reset)count=0;
            else count=count+1;
        end
    always@(count[1:0])
    begin
        case(count[1:0])
            0:begin 
                Out=S2;SI=\'b1110; 
              end
            1:begin 
                Out=S1;SI=\'b1101;
              end
            2:begin 
                Out=M2;SI=\'b1011; 
              end
            3:begin 
                Out=M1;SI=\'b0111; 
              end
        endcase
    end
    always@(posedge Clk)
    begin
    	if(Reset)
    	begin M1=0;M2=0;S1=0;S2=0; end
        if(t_o)
        begin
              if(S2!=9)S2=S2+1;
              else
                begin
                if(S1!=6)S1=S1+1;
                else
                    begin
                    if(M2!=9)M2=M2+1;
                    else
                        begin
                        if(M1!=9)M1=M1+1;
                        else M1=0;
                        M2=0;
                        end
                    S1=0;
                    end
                 S2=0; 
                 end         
        end
    end
    mdy_74HC4511 mdy(LE,BI_N,LT_N,Out,number_out);
endmodule

其中数码显示板使用的是74HC4511,其引脚图如下
\"在这里插入图片描述\"

注意点

  • 这里面调用了另外一个模块mdy_74HC4511,用于将数字0-9转化成74HC4511所需要的a-g数码管对应二进制码。
  • 同时应该注意DIG1是为0的时候显示。
  • 这里对于数字进位的判断直接使用多层IF嵌套实现。
  • 由于数码显示板一次只能显示一位数字,因此这里通过使用4分频,不断的在4位显示之间来回切换,在高频率下就可以使肉眼看上去像是4位同时显示。
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
标签列表