集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1456|回复: 3

TLC549的驱动代码

[复制链接]
fpga_feixiang 发表于 2020-3-2 12:34:56 | 显示全部楼层 |阅读模式
module TLC549 (
                    input clk,
                    input reset,
                    input AD_DATA,
                    output AD_CS,
                    output AD_CLK,
                    output clk_display,
                    output reg [7:0] readdata                     
               );

// clk=50MHz , AD_CLK_r = 1MHz               
reg  AD_CLK_r;
reg[5:0] DCLK_DIV;

always @(posedge clk or negedge reset)
begin
  if(!reset)
  begin
      DCLK_DIV <= 1'b0;
      AD_CLK_r <= 1'b0;
  end
  else if(DCLK_DIV < 6'd50) DCLK_DIV <= DCLK_DIV+1'b1;
  else
    begin
      DCLK_DIV <= 0;
      AD_CLK_r <= ~AD_CLK_r;
    end
end

assign clk_display = AD_CLK_r;

reg[4:0] COUNTER;

always @(posedge AD_CLK_r or negedge reset)
begin
    if(!reset) COUNTER <= 1'b0;
    else COUNTER <= COUNTER+1'b1;
end

assign AD_CS = (COUNTER <= 5'd9)? 1'b0 : 1'b1;

assign AD_CLK =  (COUNTER >= 5'd2 && COUNTER <= 5'd9)? AD_CLK_r : 1'b0;

reg[7:0] data_reg;

always @(negedge AD_CLK_r)
begin
  if(COUNTER >= 5'd2 && COUNTER <= 5'd9)  
     begin
       data_reg[0] <= AD_DATA;
       data_reg[7:1] <= data_reg[6:0];
     end
  else  readdata <= data_reg;
end

endmodule

4、数码管显示代码:

module display(
                input clk,
                input[7:0] data,
                input reset,
                output reg [7:0] seg,
                output reg [3:0] com );
reg [14:0] cnt;

always@(posedge clk or negedge reset)
begin
   if(!reset) cnt <= 12'd0;
   else cnt <= cnt + 1'b1;
end

reg[7:0] seg_reg;

always@(cnt[11:10] or data)
begin
  case(cnt[11:10])
   2'b00 : begin com <= 4'b1110; seg_reg <= data%8'd10;      end
   2'b01 : begin com <= 4'b1101; seg_reg <= data%8'd100/8'd10;  end
   2'b10 : begin com <= 4'b1011; seg_reg <= data/8'd100;     end
   default : begin com <= 4'b1111;seg_reg <= 8'bzzzz_zzzz;end
  endcase
end

always @(com or seg_reg)
begin
case(seg_reg[3:0])
  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
      default: seg=8'hff;
endcase
end

endmodule
大鹏 发表于 2020-3-15 09:51:50 | 显示全部楼层
TLC549的驱动代码
大鹏 发表于 2020-3-19 09:55:23 | 显示全部楼层
TLC549的驱动代码
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-20 03:29 , Processed in 0.058204 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表