/*****************************************
**                                      **
**             数码管显示模块               **
**                                      **
******************************************/
module display (
    clk_1kHz,
    data_in,
    point_in,
    dm_out,
    wm_out
            );
            
input clk_1kHz;
input [31:0] data_in;        //输入
input [7:0] point_in; //小数点 output [7:0] dm_out; //段选信号 output [7:0] wm_out; //位选信号 reg [2:0] scan_smg; //数码管扫描寄存器 reg [7:0] dm_out_r; //段码寄存器 reg [7:0] wm_out_r; //位码寄存器 //---------------------------------------------------------- always@(posedge clk_1kHz) begin scan_smg<=scan_smg+1\'b1; case(scan_smg) 3\'b000: begin dm_out_r<=disp(data_in[31:28]) && (point_in[0]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b1111_1110; end 3\'b001: begin dm_out_r<=disp(data_in[27:24]) && (point_in[1]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b1111_1101; end 3\'b010: begin dm_out_r<=disp(data_in[23:20]) && (point_in[2]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b1111_1011; end 3\'b011: begin dm_out_r<=disp(data_in[19:16]) && (point_in[3]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b1111_0111; end 3\'b100: begin dm_out_r<=disp(data_in[15:12]) && (point_in[4]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b1110_1111; end 3\'b101: begin dm_out_r<=disp(data_in[11:8]) && (point_in[5]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b1101_1111; end 3\'b110: begin dm_out_r<=disp(data_in[7:4]) && (point_in[6]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b1011_1111; end 3\'b111: begin dm_out_r<=disp(data_in[3:0]) && (point_in[7]?8\'b1111_1111:8\'b0111_1111);
wm_out_r<=8
\'b0111_1111; end default: ; endcase end //-------------------------------------------------------------- //数码管译码函数 function[7:0] disp; input [3:0] a; case(a) 4\'d0: disp=8\'b1100_0000; 4\'d1: disp=8\'b1111_1001; 4\'d2: disp=8\'b1010_0100; 4\'d3: disp=8\'b1011_0000; 4\'d4: disp=8\'b1001_1001; 4\'d5: disp=8\'b1001_0010; 4\'d6: disp=8\'b1000_0010; 4\'d7: disp=8\'b1111_1000; 4\'d8: disp=8\'b1000_0000; 4\'d9: disp=8\'b1001_0000; default:disp=8\'b1111_1111; endcase endfunction //-------------------------------------------------------------- assign dm_out=dm_out_r; assign wm_out=wm_out_r; endmodule

 

版权声明:本文为sky1991原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/sky1991/archive/2012/06/28/2568661.html