`timescale 1ns/1nsmodule Automat(A,B,CLK,QH,QQ,Sale,Back,data_XS); input A,B,QH,QQ,CLK; output Sale,Back; output [6:0] data_XS; reg [5:0] sum; reg [3:0] XSH; reg [3:0] XSL; wire [6:0] data_XS; reg Sale,Back; reg D; wire [3:0] data; wire CLK2; Clk D1(CLK2); SEL2X1 D2(XSH,XSL,CLK2,data); bin47seg D3(data,data_XS); initial begin sum=0; end always@(posedge A or posedge B) begin #1 if(A) sum=sum+5; if(B) sum=sum+10; end always@(posedge CLK) begin XSH=sum/10; XSL=sum%10; #1 if(sum<15) D=0; else D=1; end always@(posedge QH) begin if(D) begin Sale=1; sum=sum-10; #5 Sale=0; end end always@(posedge QQ) begin sum=0; Back=1; endendmodulemodule bin47seg(data_in,data_out);input[3:0] data_in;output[6:0] data_out;reg [6:0] data_out;always@(data_in)case(data_in) 4'b0000:data_out=7'b1000000; 4'b0001:data_out=7'b1111001; 4'b0010:data_out=7'b0100100; 4'b0011:data_out=7'b0110000; 4'b0100:data_out=7'b0011001; 4'b0101:data_out=7'b0010010; 4'b0110:data_out=7'b0000010; 4'b0111:data_out=7'b1111000; 4'b1000:data_out=7'b0000000; 4'b1001:data_out=7'b0011000; 4'b1010:data_out=7'b0001000; 4'b1011:data_out=7'b0000011; 4'b1100:data_out=7'b0100111; 4'b1101:data_out=7'b0100001; 4'b1110:data_out=7'b0000110; 4'b1111:data_out=7'b0001110; default: data_out=7'b1111111;endcaseendmodulemodule SEL2X1(data1,data2,Sel,data_C); input [3:0] data1; input [3:0] data2; input Sel; output [3:0] data_C; reg [3:0] data_C; always@(Sel) begin if(Sel==1) data_C=data1; if(Sel==0) data_C=data2; endendmodulemodule Clk(CLK); output CLK; reg CLK; initial begin CLK=0; forever begin #2 CLK=1; #2; CLK=0; end endendmodule
追问着只是AD吧
VERILOG HDL,可以使用延时程序吗?还有 initial 只执行一次,不是在仿真的时候采用的吗,程序也可以使用? 还差好多,比如串口,fifo ,再说上面是1ns 延迟到1us还是比较麻烦的,可以q我 上面有我的q 。六2六3五6八6二