想用zx—2板子做一个电子秤,关于hx711网上Verilog的资料比较少,自己看了手册和芯片的焊接原理图,还是不能正确读出数据,代码手册焊接原理如下,希望大神能帮我看一下,感激不尽
module hx711_driver(Clk,Rst_n,out,ADDO,ADSK,Get_Flag);
input Clk;
input Rst_n;
output reg [23:0] out;
output reg ADDO;
output reg ADSK;
output reg Get_Flag;
reg [23:0] out_reg;
reg [20:0] Cnt1;
always@(posedge Clk or negedge Rst_n)
if(!Rst_n)
Cnt1 <= 20'd0;
else if(Cnt1 == 20'd100000)
Cnt1 <= 20'd0;
else
Cnt1 <= Cnt1 + 1'b1;
always@(posedge Clk or negedge Rst_n)
if(!Rst_n)
begin
ADSK <= 1'b0;
ADDO <= 1'b1;
out_reg <= 8'd0;
out <= 8'd0;
end
else
begin
case(Cnt1)
1 : ADDO <= 1'b0;
51 : ADSK <= 1;
52 : out_reg[23] <= ADDO;
71 : ADSK <= 0;
91 : ADSK <= 1;
92 : out_reg[22] <= ADDO;
111 : ADSK <= 0;
131 : ADSK <= 1;
132 : out_reg[21] <= ADDO;
151 : ADSK <= 0;
171 : ADSK <= 1;
172 : out_reg[20] <= ADDO;
191 : ADSK <= 0;
211 : ADSK <= 1;
212 : out_reg[19] <= ADDO;
231 : ADSK <= 0;
251 : ADSK <= 1;
252 : out_reg[18] <= ADDO;
271 : ADSK <= 0;
291 : ADSK <= 1;
292 : out_reg[17] <= ADDO;
311 : ADSK <= 0;
331 : ADSK <= 1;
332 : out_reg[16] <= ADDO;
351 : ADSK <= 0;
371 : ADSK <= 1;
372 : out_reg[15] <= ADDO;
391 : ADSK <= 0;
411 : ADSK <= 1;
412 : out_reg[14] <= ADDO;
431 : ADSK <= 0;
451 : ADSK <= 1;
452 : out_reg[13] <= ADDO;
471 : ADSK <= 0;
491 : ADSK <= 1;
492 : out_reg[12] <= ADDO;
511 : ADSK <= 0;
531 : ADSK <= 1;
532 : out_reg[11] <= ADDO;
551 : ADSK <= 0;
571 : ADSK <= 1;
572 : out_reg[10] <= ADDO;
591 : ADSK <= 0;
611 : ADSK <= 1;
612 : out_reg[9] <= ADDO;
631 : ADSK <= 0;
651 : ADSK <= 1;
652 : out_reg[8] <= ADDO;
671 : ADSK <= 0;
691 : ADSK <= 1;
692 : out_reg[7] <= ADDO;
711 : ADSK <= 0;
731 : ADSK <= 1;
732 : out_reg[6] <= ADDO;
751 : ADSK <= 0;
771 : ADSK <= 1;
772 : out_reg[5] <= ADDO;
791 : ADSK <= 0;
811 : ADSK <= 1;
812 : out_reg[4] <= ADDO;
831 : ADSK <= 0;
851 : ADSK <= 1;
852 : out_reg[3] <= ADDO;
871 : ADSK <= 0;
891 : ADSK <= 1;
892 : out_reg[2] <= ADDO;
911 : ADSK <= 0;
931 : ADSK <= 1;
932 : out_reg[1] <= ADDO;
951 : ADSK <= 0;
971 : ADSK <= 1;
972 : out_reg[0] <= ADDO;
991 : ADSK <= 0;
1011 : begin ADSK <= 1; ADDO <= 1'b1;end
1031 : ADSK <= 0;
99997 : Get_Flag <= 1;
99998 : begin out <= out_reg;Get_Flag <= 0;end
99999 : ADDO <= 1'b0;
endcase
end
endmodule
|