coreジェネレーターでカウンタ作る
なんか自分で書いた方が早いような気がするけど、やってみた。
とりあえずnew sauceからIPcoreを選択してcounterを探す。
そしたらでてくるので適当に設定したら作ってくれた。とりあえず今回は
4bitのカウンタでLOADピンがhighで値設定が可能な感じのやつ
//////////////////////////////////////////////////////////////////////////////// // Copyright (c) 1995-2007 Xilinx, Inc. All rights reserved. //////////////////////////////////////////////////////////////////////////////// // ____ ____ // / /¥/ / // /___/ ¥ / Vendor: Xilinx // ¥ ¥ ¥/ Version: J.40 // ¥ ¥ Application: netgen // / / Filename: PCNT.v // /___/ /¥ Timestamp: WED 9 JUL 23:14:12 2008 // ¥ ¥ / ¥ // ¥___¥/¥___¥ // // Command : -intstyle ise -w -sim -ofmt verilog C:¥FPGA¥spattan3e¥TD4¥tmp¥_cg¥PCNT.ngc C:¥FPGA¥spattan3e¥TD4¥tmp¥_cg¥PCNT.v // Device : 3s500efg320-4 // Input file : C:/FPGA/spattan3e/TD4/tmp/_cg/PCNT.ngc // Output file : C:/FPGA/spattan3e/TD4/tmp/_cg/PCNT.v // # of Modules : 1 // Design Name : PCNT // Xilinx : C:¥Xilinx92i // // Purpose: // This verilog netlist is a verification model and uses simulation // primitives which may not represent the true implementation of the // device, however the netlist is functionally correct and should not // be modified. This file cannot be synthesized and should only be used // with supported simulation tools. // // Reference: // Development System Reference Guide, Chapter 23 // Synthesis and Simulation Design Guide, Chapter 6 // //////////////////////////////////////////////////////////////////////////////// `timescale 1 ns/1 ps module PCNT ( load, clk, l, q ); input load; input clk; input [3 : 0] l; output [3 : 0] q; // synopsys translate_off wire ¥BU2/N4 ; wire ¥BU2/q_thresh1 ; wire NLW_VCC_P_UNCONNECTED; wire NLW_GND_G_UNCONNECTED; wire [3 : 0] l_2; wire [3 : 0] NlwRenamedSig_OI_q; wire [3 : 0] ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum ; wire [2 : 0] ¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple ; wire [3 : 0] ¥BU2/U0/q_next ; assign l_2[3] = l[3], l_2[2] = l[2], l_2[1] = l[1], l_2[0] = l[0], q[3] = NlwRenamedSig_OI_q[3], q[2] = NlwRenamedSig_OI_q[2], q[1] = NlwRenamedSig_OI_q[1], q[0] = NlwRenamedSig_OI_q[0]; VCC VCC_0 ( .P(NLW_VCC_P_UNCONNECTED) ); GND GND_1 ( .G(NLW_GND_G_UNCONNECTED) ); GND ¥BU2/XST_GND ( .G(¥BU2/N4 ) ); defparam ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<0>1 .INIT = 8'h72; LUT3 ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<0>1 ( .I0(load), .I1(l_2[0]), .I2(NlwRenamedSig_OI_q[0]), .O(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [0]) ); defparam ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<1>1 .INIT = 8'h72; LUT3 ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<1>1 ( .I0(load), .I1(l_2[1]), .I2(NlwRenamedSig_OI_q[1]), .O(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [1]) ); defparam ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<2>1 .INIT = 8'h72; LUT3 ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<2>1 ( .I0(load), .I1(l_2[2]), .I2(NlwRenamedSig_OI_q[2]), .O(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [2]) ); defparam ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<3>1 .INIT = 8'h72; LUT3 ¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum<3>1 ( .I0(load), .I1(l_2[3]), .I2(NlwRenamedSig_OI_q[3]), .O(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [3]) ); MUXCY ¥BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrymux0 ( .CI(¥BU2/q_thresh1 ), .DI(load), .S(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [0]), .O(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [0]) ); XORCY ¥BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxor0 ( .CI(¥BU2/q_thresh1 ), .LI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [0]), .O(¥BU2/U0/q_next [0]) ); XORCY ¥BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carryxortop ( .CI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [2]), .LI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [3]), .O(¥BU2/U0/q_next [3]) ); MUXCY ¥BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carrymux ( .CI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [0]), .DI(load), .S(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [1]), .O(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [1]) ); XORCY ¥BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[1].carryxor ( .CI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [0]), .LI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [1]), .O(¥BU2/U0/q_next [1]) ); MUXCY ¥BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carrymux ( .CI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [1]), .DI(load), .S(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [2]), .O(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [2]) ); XORCY ¥BU2/U0/the_addsub/no_pipelining.the_addsub/i_simple_model.carrychaingen[2].carryxor ( .CI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/carry_simple [1]), .LI(¥BU2/U0/the_addsub/no_pipelining.the_addsub/halfsum [2]), .O(¥BU2/U0/q_next [2]) ); defparam ¥BU2/U0/q_i_0 .INIT = 1'b0; FDE ¥BU2/U0/q_i_0 ( .C(clk), .CE(¥BU2/q_thresh1 ), .D(¥BU2/U0/q_next [0]), .Q(NlwRenamedSig_OI_q[0]) ); defparam ¥BU2/U0/q_i_1 .INIT = 1'b0; FDE ¥BU2/U0/q_i_1 ( .C(clk), .CE(¥BU2/q_thresh1 ), .D(¥BU2/U0/q_next [1]), .Q(NlwRenamedSig_OI_q[1]) ); defparam ¥BU2/U0/q_i_2 .INIT = 1'b0; FDE ¥BU2/U0/q_i_2 ( .C(clk), .CE(¥BU2/q_thresh1 ), .D(¥BU2/U0/q_next [2]), .Q(NlwRenamedSig_OI_q[2]) ); defparam ¥BU2/U0/q_i_3 .INIT = 1'b0; FDE ¥BU2/U0/q_i_3 ( .C(clk), .CE(¥BU2/q_thresh1 ), .D(¥BU2/U0/q_next [3]), .Q(NlwRenamedSig_OI_q[3]) ); VCC ¥BU2/XST_VCC ( .P(¥BU2/q_thresh1 ) ); // synopsys translate_on endmodule // synopsys translate_off `timescale 1 ps / 1 ps module glbl (); parameter ROC_WIDTH = 100000; parameter TOC_WIDTH = 0; wire GSR; wire GTS; wire PRLD; reg GSR_int; reg GTS_int; reg PRLD_int; //-------- JTAG Globals -------------- wire JTAG_TDO_GLBL; wire JTAG_TCK_GLBL; wire JTAG_TDI_GLBL; wire JTAG_TMS_GLBL; wire JTAG_TRST_GLBL; reg JTAG_CAPTURE_GLBL; reg JTAG_RESET_GLBL; reg JTAG_SHIFT_GLBL; reg JTAG_UPDATE_GLBL; reg JTAG_SEL1_GLBL = 0; reg JTAG_SEL2_GLBL = 0 ; reg JTAG_SEL3_GLBL = 0; reg JTAG_SEL4_GLBL = 0; reg JTAG_USER_TDO1_GLBL = 1'bz; reg JTAG_USER_TDO2_GLBL = 1'bz; reg JTAG_USER_TDO3_GLBL = 1'bz; reg JTAG_USER_TDO4_GLBL = 1'bz; assign (weak1, weak0) GSR = GSR_int; assign (weak1, weak0) GTS = GTS_int; assign (weak1, weak0) PRLD = PRLD_int; initial begin GSR_int = 1'b1; PRLD_int = 1'b1; #(ROC_WIDTH) GSR_int = 1'b0; PRLD_int = 1'b0; end initial begin GTS_int = 1'b1; #(TOC_WIDTH) GTS_int = 1'b0; end endmodule endmodule
なんか無駄に長いな。