📄 sign_div_unsign_39h.tdf
字号:
--sign_div_unsign DEN_REPRESENTATION="SIGNED" DEN_WIDTH=32 LPM_PIPELINE=0 MAXIMIZE_SPEED=5 NUM_REPRESENTATION="SIGNED" NUM_WIDTH=32 SKIP_BITS=0 denominator numerator quotient remainder
--VERSION_BEGIN 6.0 cbx_cycloneii 2006:02:07:15:19:20:SJ cbx_lpm_abs 2006:01:02:19:20:00:SJ cbx_lpm_add_sub 2006:01:09:11:17:20:SJ cbx_lpm_divide 2006:01:18:17:01:10:SJ cbx_mgl 2006:04:14:11:14:36:SJ cbx_stratix 2006:02:07:15:17:04:SJ cbx_stratixii 2006:03:03:09:35:36:SJ cbx_util_mgl 2006:01:09:10:46:36:SJ VERSION_END
-- Copyright (C) 1991-2006 Altera Corporation
-- Your use of Altera Corporation's design tools, logic functions
-- and other software and tools, and its AMPP partner logic
-- functions, and any output files any of the foregoing
-- (including device programming or simulation files), and any
-- associated documentation or information are expressly subject
-- to the terms and conditions of the Altera Program License
-- Subscription Agreement, Altera MegaCore Function License
-- Agreement, or other applicable license agreement, including,
-- without limitation, that your use is for the sole purpose of
-- programming logic devices manufactured by Altera and sold by
-- Altera or its authorized distributors. Please refer to the
-- applicable agreement for further details.
FUNCTION alt_u_div_2ue (denominator[31..0], numerator[31..0])
RETURNS ( den_out[31..0], quotient[31..0], remainder[31..0]);
FUNCTION add_sub_mac (cin, dataa[31..0], datab[31..0])
RETURNS ( result[31..0]);
FUNCTION add_sub_e6f (cin, dataa[31..0], datab[31..0])
RETURNS ( result[31..0]);
--synthesis_resources = lut 591
SUBDESIGN sign_div_unsign_39h
(
denominator[31..0] : input;
numerator[31..0] : input;
quotient[31..0] : output;
remainder[31..0] : output;
)
VARIABLE
divider : alt_u_div_2ue;
adder : add_sub_mac;
compl_adder1 : add_sub_e6f;
compl_adder_4 : add_sub_e6f;
adder_out[31..0] : WIRE;
den_choice[31..0] : WIRE;
gnd_wire : WIRE;
neg_num[31..0] : WIRE;
neg_quot[31..0] : WIRE;
norm_num[31..0] : WIRE;
num_choice[31..0] : WIRE;
pre_neg_den[31..0] : WIRE;
pre_neg_quot[31..0] : WIRE;
pre_quot[31..0] : WIRE;
protect_quotient[31..0] : WIRE;
protect_remainder[31..0] : WIRE;
q_is_neg : WIRE;
vcc_wire : WIRE;
zero_wire[31..0] : WIRE;
zero_wire_3[31..0] : WIRE;
BEGIN
divider.denominator[] = den_choice[];
divider.numerator[] = norm_num[];
adder.cin = gnd_wire;
adder.dataa[] = den_choice[];
adder.datab[] = protect_remainder[];
compl_adder1.cin = vcc_wire;
compl_adder1.dataa[] = (! denominator[]);
compl_adder1.datab[] = zero_wire[];
compl_adder_4.cin = vcc_wire;
compl_adder_4.dataa[] = (! pre_quot[]);
compl_adder_4.datab[] = zero_wire_3[];
adder_out[] = adder.result[];
den_choice[] = ((denominator[] & (! denominator[31..31])) # (pre_neg_den[] & denominator[31..31]));
gnd_wire = B"0";
neg_num[] = (! num_choice[]);
neg_quot[] = (! protect_quotient[]);
norm_num[] = ((num_choice[] & (! num_choice[31..31])) # (neg_num[] & num_choice[31..31]));
num_choice[] = numerator[];
pre_neg_den[] = compl_adder1.result[];
pre_neg_quot[] = compl_adder_4.result[];
pre_quot[] = ((protect_quotient[] & (! num_choice[31..31])) # (neg_quot[] & num_choice[31..31]));
protect_quotient[] = divider.quotient[];
protect_remainder[] = divider.remainder[];
q_is_neg = denominator[31..31];
quotient[] = ((pre_quot[] & (! q_is_neg)) # (pre_neg_quot[] & q_is_neg));
remainder[] = ((protect_remainder[] & (! num_choice[31..31])) # (adder_out[] & num_choice[31..31]));
vcc_wire = B"1";
zero_wire[] = B"00000000000000000000000000000000";
zero_wire_3[] = B"00000000000000000000000000000000";
END;
--VALID FILE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -