|
本帖最后由 hehao9051 于 2016-11-26 21:46 编辑
本人接触FPGA,在板子上调试时发现如下代码中的一个问题,希望哪位大哥帮忙看看,问题在24-25行。还想请教一个问题,加入写一个数码管显示的模块,然后通过调用这个模块来显示温度,那么温度数据通过什么方式传递给模块呢?
- module LedCtrl(output reg[7:0] seg, output reg[3:0] dig, input clock);
- reg[3:0] disp_dat; //显示数据寄存器
- reg[3:0] disp_dat1;
- reg[3:0] disp_dat2;
- reg[3:0] disp_dat3;
- reg[3:0] disp_dat4;
- reg[36:0] count; //定义计数寄存器
- reg[1:0] com_state;
- /*对时钟进行计数,用于数码管显示*/
- always @ (posedge clock ) begin
- count = count + 1'b1;
- end
- always @ (count[24]) begin
- disp_dat1 = {count[28:25]};
- disp_dat2 = disp_dat1 + 1'b1;
- disp_dat3 = disp_dat2 + 1'b1;
- disp_dat4 = disp_dat3 + 1'b1;
- end
- /*计时对点亮数码管进行切换*/
- always @ (count[17]) begin
- //com_state = {count[19:18]}; // 使用这句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
复制代码 |
|