DDSmarket自己可以开一家吗?它是哪个公司开的

从电路到verilog | 编程综合运用,不得不从DDS的实例说起-可编程逻辑-与非网
实际上说道上一讲,老衲就可以体面撤退了。该说的都说了,细枝末节嘛,也不适合讲座这种短篇幅的东西来表现。可是老僧舍不得大家啊(实际上是舍不得出场费),所以凑个整两个九讲。话说回来,&九&这个数字一向与武林有关:《九阴真经》、《九阳真经》还有降龙2&9掌&&
这一讲呢,将会综合应用前面的全部知识,来完成一个相对较大的系统。希望施主们打起七十二分的精神,如果哪些知识点忘掉了,也需要往回翻一翻、看一看。
再唠叨一句:讲座篇幅短短几十页,不可能包含Verilog语言全部的内容,就是与电路有关的也不全。想想看,IEEE标准200多页,除了DPI也有150页的样子,这个讲座才几页啊。喜欢老衲啰嗦的老少爷们也不要失望,老和尚&慈悲为怀,善念为本&早就写得了《Verilog传奇》的手抄本小册子。您老听着高兴,可以到茶房那里购买,&走过,路过,可别错过啊&。
好了,闲言少叙,书归正传。现在老僧开始给大伙儿讲讲。
1. 概念算法,两不耽误
按照一般论文绪论里面吹牛的定义:直接数字合成是一种数字电子方式,它从一个单一(或混合)的时钟源中产生任意波形和频率。与传统的频率合成器相比,DDS具有低成本、低功耗、高分辨率和快速转换时间等优点,广泛使用在电信与电子仪器领域,是实现设备全数字化的一个关键技术。
DDS的一般结构如图1所示,其数字逻辑部分包括控制模块、累加器和正弦函数发生器三个部分。控制模块可以串行或并行的方式装载并寄存用户输入的频率控制码;而累加器根据频率控制码在每个时钟周期内进行相位累加,得到一个相位值;正弦函数发生器则对该相位值计算数字化正弦波幅度。DDS芯片输出的一般是数字化的正弦波,因此还需经过高速D/A转换器和低通滤波器才能得到一个可用的模拟频率信号。
图1 DDS系统整体结构
要使DDS系统工作需要两个操作阶段:我们称之为编程和运行。
在编程这一阶段里,电子控制器把数据载入至存储器中。数据的每一个单元是一个用来表示当前时刻信号幅度的二进制数。存储器中这些数据的排列(数组)构成一张振幅表,表示每一时刻当前波形的振幅。举个例子,在一张振幅表中,前一半的数全为0,后一半全为波形振幅的最大值(100%),这些数据就表示&方波&了。任何波形都可以通过简单地改变这些数据来产生。
在运行这一阶段中,累加器受系统时钟参考源的控制,每一个脉冲自增。相位累加器的输出(相位)通常就是数组中依次输出的各个数据。最后会被DAC依次转换成模拟波形。
先看控制模块,这个主要负责数字DDS的输入输出接口。例如,信号频率的输入可以通过串口线,由上位机输入;当然,也可以通过按键在PCB板上完成。对于的ADC接口,则与选择的具体器件有关。可能还需要显示一下频率数值,这个就和BCD(Binary-Coded Decimal&,BCD)译码器及其接口,乃至液晶显示( Liquid Crystal Display, LCD)接口有关联了。这部分很重要,但是不是本讲的重点,且容贫道一嘴带过。
累加器部分,更加简单的,就是一个允许设置累加步长的累加器了。更加复杂一点的结构是还允许设置初始值,也就是所谓初始相位。实际工程中,初始相位的设置意义不大,就不写入代码了。
现在讲到关键点正弦函数发生器了。一般而言,九成九的正弦函数发生器会采用ROM的形式。输入的地址对应规格化的角度值,输出的数据则对应该角度的正弦值。问题的核心是:到底存储多少数据。0度到最接近360度的一个分度,自然是一个选择,但是这样实际上浪费了大量的存储空间。
颠来倒去一句话:有0度到90度的正弦值,就可以得到全部是个象限的正弦值。如图2,其中给出了不同象限的正弦值的计算公式以及其他设计中需要的内容。图中的公式就是所谓周期性的公式了,用于非第一象限的正弦值的计算。另外为了方便,给出了一些特殊角度的地址,以及各个象限的地址开头两比特值和正弦值的符号信息。
图2 四个象限的正弦函数
为了实现用0到90度的正弦函数值,计算0到360的正弦值的目的,需要将图9.1里面的正弦函数发生器劈为四份,如图9.3所示。第一部分是0到90度的正弦函数发生器,这个无需多说。第二个是地址转换模块,它去掉原来0到360度对应的&长地址&的最高两个比特(90度例外,只去掉最高一个比特),这样得到0到90度对应的&短地址&。第三部分叫符号产生模块,负责根据当前角度对应的象限计算正弦值的符号。注意图9.2的地址与符号部分,正弦值的符号实际上就是对应地址的最高位。由于0到90度的正弦函数发生器可能计算时候有时延,所以符号产生模块还负责这个时延的矫正。最后一个模块是正弦值处理模块,就是正数值透传、负数值变为补码的功能。
图3 正弦函数发生器(0到360度)结构
地址转换与符号产生模块和正弦值处理模块的代码也无需详述。
把系统结构中除了0到90度的正弦函数发生器的各个部分打包,叫做DDS框架,其架构与代码如图4所示。
图4 DDS框架与其他部分的关系
2. 非线数值,折线逼近
有道是&一将名成万古枯&,在数字逻辑设计领域虽然没有那么惨烈,却也是&领导动动嘴。地下跑断腿&。就拿前面提到的&用直线/折线拟合正弦函数的&这个思想为例,提出想法的人可以简单地就是如图5的勾上几笔,看似就圆满了。
但是接下来的工作还有很多:几段折线合适?这些折线的位置如何确定?系数如何计算?接着还有定点化如何完成?最后有数字逻辑系统的结构与实现细节。这些老大可以不考虑,工程师却不能不研究。
图5折线法计算正余弦值的示意图
按照横轴/角度均匀选择线段的起始点显然是一个最简单的方法,但是这绝对不是一个好的方法。理由很简单,正弦曲线的曲率--或者叫导数--变化时不均匀的。均匀选择线段会造成曲率大的地方,计算误差大;而曲率小的地方,计算误差也小。这显然是不合理的。
具体算法呢,超出了这套书的范围(欲知详情,请看小册子),按下不表。反正施主们得到了下面的数值:
以横轴采样个数64个以及最大允许误差0.02作为输入,可以得到一个正弦函数的14段折线拟合,有关信息见表1。
表1 折线拟合正弦函数中,线段信息
起点(度)
起点(度)
对于每段折线都有:
其中,x为弧度值。例如,对于5度(弧度0.0873)的角度值,其正弦函数值为sin(0.0873) & 0.0887;此时x位于第二段折线的范围里面,按照折线计算y = 0.9921 & 0.0873 + 0.0006 & 0.0872;误差大约为0.001,这已经算是很精确了。通过程序扫描,这个算法最大的误差为0.019。
然后是定点化,忘记如何做的请回去复习则个。
考察折线法有关的数值的取值范围,定义其定点化格式如表2,其中&value_width&是待输出的结果的位宽。需要注意的是a_f由于其取值范围的特殊,设计中比其他有关数值多了一个比特。
表2 折线法有关的数值的取值范围与定点化格式
折线起始点/地址
定点化格式
Q(address_width+1).0
Q(value_width+1).(value_address)
Q(value_width).(value_address)
Q(value_width).(value_address)
对应定点化计算的公式为:
其中,A_f和B_f是定点化后的折线的系数。
此时,y有(value_width + address_width +1 )个比特的位宽,而要求结果只有value_width个比特的位宽,需要进行截位处理。根据已知条件,这个截位也有些特殊。计算结果y的最高比特一定为零,这个是公式的含义告诉我们的(提示一下:正弦值)。因此上系统输出的结果应该是y从第二个最高比特开始的value_width个比特。
以address_width = 6和value_width = 7为例,可以获得折线的信息如表3所示。
表3 折线拟合正弦函数中,线段定点化信息(十六进制表示)
起点的短地址
起点的短地址
00&&&&&&&&&
另外可以得到:相对浮点运算,定点运算又带来了0.011的计算误差。
至此,定点化结束,可以交给数字逻辑设计的有关人员,开始具体实现方面的工作了。
具体的设计思路倒也不难:是&先选系数后计算&,也就是先判断所在折线序号,得到对应系数再计算,其基本结构见图6所示;值得一提的是,只需要这些折线的终点或者起点里面的一个信息就足够了,因为折线是首尾相连的。这里老衲采用了终点。还有一个小技巧是,最后一个折线的终点也是多余的,因为它必然对应最高的地址。
图6 &先选系数后计算&结构
多路选择模块稍稍复杂一点点,这里捎带脚介绍一下。如图7所示,多路选择模块由若干比较器和一个用&case&书写的选择器组成。比较器中points为各段折线对应的重点。选择器这有一种特殊的编码决定选择哪一个信号,具体编码大伙儿自己分析。
图7 多路选择模块的结构
在实现细节上还有一个很多人会跌掉的坑,那就是关于90度的处理。搞不好,就会在90度的时候,计算出0度的正弦值。这样输出的曲线就会出现在应该最大值1的时候,输出一个深坑(0值)的情况。对于这种情况,可以特殊问题特殊处理,直接赋值90度的正弦值。在本回书的例子里面,采用了一个迂回的方式,设90度为最接近它的最大角度(例如,步长为1度的时候,输入的&短地址&为90度,计算时候的地址则取为89度),在假设系统8比特输出位宽的前提下,不会产生输出误差的。
在例1中给出了折线法计算0度到90度正弦值的代码,结合前面介绍过的DDS的框架,就可以得到完整的DDS系统了。
【例1】折线法计算0度到90度正弦值的代码
module line_sin_0_90
#(parameter ADDRESS_WIDTH = 8,
//Bit width for phase counter and step
parameter VALUE_WIDTH = 8
//Output value's bit width
&&& input CLK,
&&& input RESET,
&&& input[ADDRESS_WIDTH - 1 - 1: 0] address,
&&& output reg[VALUE_WIDTH - 1 - 1 : 0] value
//Definition for Variables in the module
//Loop variable
reg[ADDRESS_WIDTH - 1 - 2: 0] intra_
//Intra address for calculation
//Change 90 degree to 111....111
//Cut the MSB
reg[ADDRESS_WIDTH - 1 - 2: 0] intra_address_
//Delay for coefficients selection
reg[VALUE_WIDTH - 1 : 0] ceo_a;
//Fixed point 1.VALUE_WIDTH
reg[VALUE_WIDTH - 2 : 0] ceo_b;
//Fixed point 0.VALUE_WIDTH
//coefficients for the lines
wire[VALUE_WIDTH - 1 + 1 + ADDRESS_WIDTH - 2 - 1: 0] long_
//Long function value without truncation
//Length: a * address
wire[VALUE_WIDTH:0] short_
//Truncation value
//definition JUDGEMENTS and Coefficients Constant
//Application part: Insert DEFINITION OF JUDGEMENTS and Coefficients Constant(DO NOT REMOVE!)
//Below code/s was/were generated by the application
reg [12 : 0]
wire [7 : 0] a[13 : 0];
wire [6 : 0] b[13 : 0];
wire [5 : 0] points[12 : 0];
//Above code/s was/were generated by the application
//Constant Tables
//Application part: Insert Constant Tables (DO NOT REMOVE!)
//Below code/s was/were generated by the application
//coefficients a and b
assign a[0] = 8'b;
assign b[0] = 7'b0000000;
assign a[1] = 8'b;
assign a[13] = 8'b;
assign b[13] = 7'b1110110;
//Connect points between lines
assign points[0] = 6'b000011;
assign points[12] = 6'b111100;
//Above code/s was/were generated by the application
//Value calculation on the line
assign long_value = ceo_a * intra_address_
assign short_value =
&&&&&&& long_value[VALUE_WIDTH - 1 + 1 + ADDRESS_WIDTH - 2 - 1 : ADDRESS_WIDTH - 2]
&&&&&&&&&& + {1'b0, ceo_b};
always @ (posedge CLK or negedge RESET)
//Address adjust: 90 degree operation
&&& if (!RESET)
&&& //Reset enable
&&&&&&& intra_address &= {(ADDRESS_WIDTH - 1){1'b0}};
&&&&&&& if (address[ADDRESS_WIDTH - 1 -1])
&&&&&&& //90 degree
&&&&&&& begin
&&&&&&&&&&& intra_address &= {(ADDRESS_WIDTH - 2){1'b1}};
&&&&&&&&&&& //To 111...111
&&&&&&& end
&&&&&&& else
&&&&&&& begin
&&&&&&&&&&& intra_address &= address[ADDRESS_WIDTH - 1 - 2: 0];
&&&&&&&&&&& //Keep original value&&&&&&&
&&&&&&& end
always @ (posedge CLK or negedge RESET)
//Address delay: waiting for coefficients selection
&&& if (!RESET)
&&& //Reset enable
&&&&&&& intra_address_delay &= {(ADDRESS_WIDTH - 1){1'b0}};
&&&&&&& intra_address_delay &= intra_
always @ (posedge CLK or negedge RESET)
//coefficients selection
&&& if (!RESET)
&&& //Reset enable
&&&&&&& ceo_a &= {(VALUE_WIDTH + 1){1'b0}};
&&&&&&& ceo_b &= {(VALUE_WIDTH ){1'b0}};
&&&&&&& case(judgments)
//Application part: Insert Coefficient Selection codes (DO NOT REMOVE!)&&&&&&&&
//Below code/s was/were generated by the application
&&&&&&&& 13'b1:
&&&&&&&& begin
&&&&&&&&&&&& ceo_a &= a[0];
&&&&&&&&&&&& ceo_b &= b[0];
&&&&&&&& end
&&&&&&&& 13'b0:
&&&&&&&& begin
&&&&&&&&&&&& ceo_a &= a[1];
&&&&&&&&&&&& ceo_b &= b[1];
&&&&&&&& end
&&&&&&&& &&
&&&&&&&& 13'b0:
&&&&&&&& begin
&&&&&&&&&&&& ceo_a &= a[13];
&&&&&&&&&&&& ceo_b &= b[13];
&&&&&&&& end
//Above code/s was/were generated by the application
&&&&&&&& default:
&&&&&&&& begin
&&&&&&&&&&& ceo_a &= {(VALUE_WIDTH + 1){1'b0}};
&&&&&&&&&&&&&& ceo_b &= {(VALUE_WIDTH ){1'b0}};
&&&&&&&& end
&&&&&&& endcase
always @ (posedge CLK or negedge RESET)
//Function value output
&&& if (!RESET)
&&& //Reset enable
&&&&&&& value &= {(VALUE_WIDTH - 1){1'b0}};
&&&&&&& value &= short_value[VALUE_WIDTH - 1 : 0];
&&&&&&& //Truncation: MSB and tails
//Judgment for which line here is
always @(*)
//Application part: Insert Comparisons (DO NOT REMOVE!)
//Below code/s was/were generated by the application
&&& for (loop = 0; loop & 13; loop = loop + 1)
&&&&&&& judgments[loop] &= (intra_address & points[loop]);
//Above code/s was/were generated by the application
3. 系统验证,中规中矩
这个系统包含很多模块,其他模块好说,进行仿真验证的时候,肉眼都可以看出它到底合适不。就是0到90度的正弦函数发生器相对输出复杂,例如对于7比特输入就有65个输出信号需要对比。对于这样的模块,最好的验证方法是测试向量方法。这个方法以前提到过,直接上代码如例2。
【例2】0到90度的正弦函数发生器验证代码
`timescale 10 ns/100 ps
//Simulation time assignment
//Insert the modules
module sin_0_90_
//definition for Variables
reg[6:0] test_vector_monory[64:0];
wire[6:0] test_
//Test Vector Value
//Address of test vectors
//Results right?
//Connection to the modules
ROM_sin_0_90 LS (.CLK(clk), .RESET(reset), .address(cntr[6:0]),
&&&&&&&&&&&&&&&&& .value(result));
assign test_vector = test_vector_monory[addr];
assign right = (test_vector == result);
assign addr = (cntr &= 3) ? ( cntr - 3): ( 64 - 3 +& cntr);
//Delay for operation
//Clock generation
//Reset operation
//Load the test vectors
&&& initial&
&&&&& $readmemh(&sin2line_test_vector__17_3_10.txt&,
&&&&&&&&&&&&&&&&& test_vector_monory);
//Couner as input
代码中,&test_vector_monory&里面存储了其他程序产生的对应正弦值,&addr&是对于实际处理模块带来的时延的修正。如果&right&信号一直是高电平,则说明0到90度的正弦函数发生器功能正确。
到了最后的系统验证的阶段了,当然也可以采用上面的测试向量的方法完成。书不重叙,这里再教施主们一个输出信号进行性能验证的手段。这个手法也在前面一章里面介绍过,莫过于写文件罢了。但是具体到正弦函数的性能验证,却还是有些技巧的。
对于正弦函数性能的测试,大多数人一定会想到快速傅里叶变换(Fast Fourier Transform,FFT)。信号频谱的最高峰就是正弦信号的线谱,其平方为正弦信号的能量;其他部分就是系统产生的噪声,噪声能量为其能量值和。这样就可以得到系统最重要的性能:信噪比 (信号噪声比,Signal-to-noise ratio ,SNR)。但是实际中,FFT也是优缺点的。这就是对于非整周期采样的数据,会有频谱散射效应。有兴趣的人士可以用任何具备FFT功能的工具做一个有趣的实验。分别产生两个序列:第一个序列为0度到359度的正弦值,第二个序列为0度到358度的正弦值。分别对于这两个序列做FFT并且画出幅度值,两者的区别立现。
针对这个情况,在采集DDS系统的输出的时候,不能任意采集。采集的样本必须满足&满周期&的性质。细心的观众一定主要到了,在DDS的框架里面有一个叫&zero_address&的信号。这个信号当长地址为全零的时候为高电平。换句话说,该信号两次为高之间的信号为满周期的信号。
现在没什么能够拦阻人类进入DDS时代的脚步了,前进!图8是本讲介绍的DDS的输出,其中还表现了一次频率变化的过程。
图8 DDS的输出信号
至于输出三角波、锯齿波或者方波的DDS,相对于上面的系统,基本不值一提,就不多说了。
最后再说一下,限于篇幅不好详细展开,有求知欲听众千万要买小册子啊!
语言本来无情物,上天入地多用途。一般时钟做输入,产生正弦片外吐。
外围框架无特殊,函数产生玄妙出。验证方法有用处,整周采样成数组。
与非网原创内容,谢绝转载!
系列汇总:
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
十年一觉,博士毕业后十多年从事无线通讯产品的研发工作。了解W-CDMA、TDS-CDMA和LTE的标准协议、接收机算法以及系统架构和开发。从事过关于W-CDMA的FPGA IP core设计工作,也完成过W-CDMA和TDS-CDMA的接收机理论研究和链路仿真工作。综合上面的工作,最终选择了无线通讯的系统设计和标准设计工作。目前拥有100多个已授权的发明专利,是某通讯行业标准文件的第一作者,亦有专利思想被写入3GPP协议。已出版著作《IP核芯志》。
直接频率合成技术实际上是通过将存储的波形数据,通过特定算法,经过高速D/A转换器转换成所需要模拟信号的数字合成技术。
发表于: 17:28:10
与互联网时代TCP/IP,HTTP一统天下的局面不同,物联网的通信环境有Ethernet, Wi-Fi, RFID, NFC(近距离无线通信), Zigbee, 6LoWPAN(IPV6低速无线版本),Bluetooth, GSM, GPRS, GPS, 3G, 4G等网络,而每一种通信应用协议都有一定适用范围。
发表于: 16:15:40
最初,对于DUT的幅频特性的测试是在固定频率点上逐点进行。这种测试方法繁琐、费时,且不直观,有时还会得出片面的结果。例如,测量点之间的谐振现象和网络特性的突变点常常被漏掉。
发表于: 10:57:56
数字逻辑系统的设计实际上包含两个相关又独立的领域:设计与测试。这套书重点是设计,因为老衲对于测试不在行,所谓“藏拙”者也。但是完全不介绍测试也不成:这样设计出来的代码不知道对错了。所以,今晚给大伙儿讲点皮毛。
发表于: 14:19:47
老衲第一次学习Verilog语言,基本就到前面几讲的程度,顶多加上了解`define宏定义。于是对于能设计IP核的人,那是佩服的五体投地,如黄河泛滥一发不可收拾。直到Verilog 2001出了参数(parameter)和生成块(generate)功能,做IP核就成了人人可以掌握的技能了。对头,下面老僧就和施主们讲这些内容。
发表于: 10:49:35
中国广州,日,广东高云半导体科技股份有限公司(以下简称“高云半导体”)于7月10日在广州科学城总部经济区科学大道243号A5栋10楼举行总部启用暨校企合作研讨会,中山大学、华南理工大学、山东大学、广东工业大学,广州国家现代服务业集成电路设计产业化基地等高校代表与基地参加了研讨。
发表于: 10:46:06
未来几年,人工智能芯片的需求将急剧上升。联合市场研究公司(Allied Market Research)预估,未来5年,人工智能芯片的需求将以每年近50%的速度增长,因为该技术将在汽车、医疗保健等多个领域得到广泛应用。
发表于: 16:42:15
云计算在企业运营中的基本工作原理是将计算分布在大量分布式计算机中,从而使企业数据中心的运行和互联网更为相似。通过云计算的运维管理,企业不仅能够实现对IT资源的统一,根据用户的需求提供可量化的存储服务与计算,而且还能有效将资源切换到实际需要的应用中,提高了IT资源的利用率,降低了系统的成本。
发表于: 16:41:21
未来几年,人工智能芯片的需求将急剧上升。联合市场研究公司(Allied Market Research)预估,未来5年,人工智能芯片的需求将以每年近50%的速度增长,因为该技术将在汽车、医疗保健等多个领域得到广泛应用。
发表于: 18:23:21
随着信息技术的发展,特别是各种数字处理器处理速度的提高,人们对数据采集系统的要求越来越高,特别是在一些需要在极短时间内完成大量数据采集的场合,对数据采集系统的速度提出了非常高的要求。
发表于: 16:20:01
& 2010 - 2018 苏州灵动帧格网络科技有限公司 版权所有.
ICP经营许可证 苏B2-&我想开个技术DDS加盟店你说是在东面开还是在西面开的好啊!_百度知道
我想开个技术DDS加盟店你说是在东面开还是在西面开的好啊!
您的回答被采纳后将获得:
系统奖励15(财富值+成长值)+难题奖励20(财富值+成长值)
我有更好的答案
被面还西面,北面一天阳光都是特别招人气。西面人是人们爱进的地方,因为面朝东。最不好的是南面,朝北,阳气不足,人气不旺
东,紫气东来
为您推荐:
其他类似问题
dds的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
下载作业帮安装包
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
start a company什么意思是开公司吗?还有,galapagos island是啥意思?反正是个地名。
作业帮用户
扫二维码下载作业帮
拍照搜题,秒出答案,一键查看所有搜题记录
是开公司的意思加拉帕戈斯岛科隆群岛即加拉帕戈斯群岛由19个火山岛组成,从南美大陆延入太平洋,约1000公里,被人称作“独特的活的生物进化博物馆和陈列室”.现存着一些不寻常的动物物种.例如陆生鬣蜥,巨龟和多种类型的雀类.1835年查尔斯·达尔文参观了这片岛屿后,从中得到感悟,为《进化论》的形成奠定了基础.希望能够帮到你!
为您推荐:
其他类似问题
开办一家公司
开办一家公司
扫描下载二维码我的理疗养生馆开了几年了,以前生意还行,感觉最近两年生意没那么好了。求哪位大神能帮我指点一下高招。_百度知道
我的理疗养生馆开了几年了,以前生意还行,感觉最近两年生意没那么好了。求哪位大神能帮我指点一下高招。
我有更好的答案
现在竞争大了,前几年做的少,现在你得想办法留住老客户,开发新客户,不能一成不变,要是别人比你服务好或者其他方面好的话肯定顾客不在你这边的,要思辨,才能持续发展。
采纳率:56%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。豆丁微信公众号
君,已阅读到文档的结尾了呢~~
浅析龙湖地产有限公司的营销模式
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
浅析龙湖地产有限公司的营销模式
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='http://www.docin.com/DocinViewer--144.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口

我要回帖

更多关于 DDS电疗 的文章

 

随机推荐