📄 sign_div_unsign_b5g.tdf
字号:
--sign_div_unsign DEN_REPRESENTATION="SIGNED" DEN_WIDTH=9 LPM_PIPELINE=0 MAXIMIZE_SPEED=9 NUM_REPRESENTATION="SIGNED" NUM_WIDTH=19 denominator numerator quotient remainder
--VERSION_BEGIN 5.0 cbx_cycloneii 2004:12:20:14:28:52:SJ cbx_lpm_add_sub 2005:04:12:13:30:42:SJ cbx_lpm_divide 2005:03:14:22:01:08:SJ cbx_mgl 2005:05:19:13:51:58:SJ cbx_stratix 2005:06:02:09:53:04:SJ cbx_stratixii 2004:12:22:13:27:12:SJ cbx_util_mgl 2005:04:04:13:50:06:SJ VERSION_END
-- Copyright (C) 1988-2005 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_3pd (denominator[8..0], numerator[18..0])
RETURNS ( den_out[8..0], quotient[18..0], remainder[8..0]);
FUNCTION add_sub_ra8 (cin, dataa[8..0], datab[8..0])
RETURNS ( result[8..0]);
FUNCTION add_sub_j6b (cin, dataa[8..0], datab[8..0])
RETURNS ( result[8..0]);
FUNCTION add_sub_48b (cin, dataa[18..0], datab[18..0])
RETURNS ( result[18..0]);
--synthesis_resources = lut 40
SUBDESIGN sign_div_unsign_b5g
(
denominator[8..0] : input;
numerator[18..0] : input;
quotient[18..0] : output;
remainder[8..0] : output;
)
VARIABLE
divider : alt_u_div_3pd;
adder : add_sub_ra8;
compl_adder1 : add_sub_j6b;
compl_adder_4 : add_sub_48b;
adder_out[8..0] : WIRE;
den_choice[8..0] : WIRE;
gnd_wire : WIRE;
neg_num[18..0] : WIRE;
neg_quot[18..0] : WIRE;
norm_num[18..0] : WIRE;
num_choice[18..0] : WIRE;
pre_neg_den[8..0] : WIRE;
pre_neg_quot[18..0] : WIRE;
pre_quot[18..0] : WIRE;
protect_quotient[18..0] : WIRE;
protect_remainder[8..0] : WIRE;
q_is_neg : WIRE;
vcc_wire : WIRE;
zero_wire[8..0] : WIRE;
zero_wire_3[18..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[8..8])) # (pre_neg_den[] & denominator[8..8]));
gnd_wire = B"0";
neg_num[] = (! num_choice[]);
neg_quot[] = (! protect_quotient[]);
norm_num[] = ((num_choice[] & (! num_choice[18..18])) # (neg_num[] & num_choice[18..18]));
num_choice[] = numerator[];
pre_neg_den[] = compl_adder1.result[];
pre_neg_quot[] = compl_adder_4.result[];
pre_quot[] = ((protect_quotient[] & (! num_choice[18..18])) # (neg_quot[] & num_choice[18..18]));
protect_quotient[] = divider.quotient[];
protect_remainder[] = divider.remainder[];
q_is_neg = denominator[8..8];
quotient[] = ((pre_quot[] & (! q_is_neg)) # (pre_neg_quot[] & q_is_neg));
remainder[] = ((protect_remainder[] & (! num_choice[18..18])) # (adder_out[] & num_choice[18..18]));
vcc_wire = B"1";
zero_wire[] = B"000000000";
zero_wire_3[] = B"0000000000000000000";
END;
--VALID FILE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -