hehao9051 发表于 2016-11-26 21:40:42

请教一个FPGA实现数码管动态扫描的问题

本帖最后由 hehao9051 于 2016-11-26 21:46 编辑

本人接触FPGA,在板子上调试时发现如下代码中的一个问题,希望哪位大哥帮忙看看,问题在24-25行。还想请教一个问题,加入写一个数码管显示的模块,然后通过调用这个模块来显示温度,那么温度数据通过什么方式传递给模块呢?
module LedCtrl(output reg seg, output reg dig, input clock);
        reg disp_dat;        //显示数据寄存器
        reg disp_dat1;
        reg disp_dat2;
        reg disp_dat3;
        reg disp_dat4;
        reg count; //定义计数寄存器

        reg com_state;

        /*对时钟进行计数,用于数码管显示*/
        always @ (posedge clock ) begin
                count = count + 1'b1;
        end

        always @ (count) begin
                disp_dat1 = {count};
                disp_dat2 = disp_dat1 + 1'b1;
                disp_dat3 = disp_dat2 + 1'b1;
                disp_dat4 = disp_dat3 + 1'b1;
        end

        /*计时对点亮数码管进行切换*/
        always @ (count) begin
                //com_state = {count}; // 使用这句4位数码管可以全部点亮
                com_state = com_state + 1'b1; // 使用这句只能点亮第三个数码管??????
        end

        /*对数码管进行扫描*/
        always @ (com_state or disp_dat1) begin
                case (com_state)
                        2'd0 :
                                begin
                                        dig = 4'b1110;
                                        disp_dat = disp_dat4;
                                end
                        2'd1 :
                                begin
                                        dig = 4'b1101;
                                        disp_dat = disp_dat3;
                                end
                        2'd2 :
                                begin
                                        dig = 4'b1011;
                                        disp_dat = disp_dat2;
                                end
                        2'd3 :
                                begin
                                        dig = 4'b0111;
                                        disp_dat = disp_dat1;
                                end
                endcase

                case (disp_dat)
                        4'h0 : seg = 8'hc0; //显示"0"
                        4'h1 : seg = 8'hf9; //显示"1"
                        4'h2 : seg = 8'ha4; //显示"2"
                        4'h3 : seg = 8'hb0; //显示"3"
                        4'h4 : seg = 8'h99; //显示"4"
                        4'h5 : seg = 8'h92; //显示"5"
                        4'h6 : seg = 8'h82; //显示"6"
                        4'h7 : seg = 8'hf8; //显示"7"
                        4'h8 : seg = 8'h80; //显示"8"
                        4'h9 : seg = 8'h90; //显示"9"
                        4'ha : seg = 8'h88; //显示"a"
                        4'hb : seg = 8'h83; //显示"b"
                        4'hc : seg = 8'hc6; //显示"c"
                        4'hd : seg = 8'ha1; //显示"d"
                        4'he : seg = 8'h86; //显示"e"
                        4'hf : seg = 8'h8e; //显示"f"
                endcase
        end
endmodule

hehao9051 发表于 2016-11-27 08:45:28

哪位帮忙解答下?谢谢

yuan61801987 发表于 2017-2-10 09:03:28

你把主时钟分频比如原来2MHz,分频成200Hz,用这个200Hz信号计数你上面的刷4位数码管。    时间1:第1位数据,段码。 时间2:第2位数据,段码。 时间3:第3位数据,段码。 时间4:第4位数据,段码。循环
最好用同步设计。

最好用同步设计。
这个阻塞=, 非阻塞<=   赋值你好忙呀搞清楚。
页: [1]
查看完整版本: 请教一个FPGA实现数码管动态扫描的问题