当前位置: 首页 > news >正文

网站建设的总体设计海淘网站是谁做的

网站建设的总体设计,海淘网站是谁做的,本地企业网站建设,wordpress主题Linkedin概述 NI 的可重配置 I/O (RIO) 硬件使开发人员能够创建自定义硬件#xff0c;以在坚固耐用、高性能和模块化架构中执行许多任务#xff0c;而无需了解低级 EDA 工具或硬件设计。使用 RIO 硬件轻松实现的此类任务之一是模拟波形生成。本教程介绍了使用 CompactRIO 硬件和 LabV…概述 NI 的可重配置 I/O (RIO) 硬件使开发人员能够创建自定义硬件以在坚固耐用、高性能和模块化架构中执行许多任务而无需了解低级 EDA 工具或硬件设计。使用 RIO 硬件轻松实现的此类任务之一是模拟波形生成。本教程介绍了使用 CompactRIO 硬件和 LabVIEW FPGA 模块输出线性波形的不同方法。 线性波形描述         线性波形是可以由具有线性斜率的方程定义的波形。线性波形可以用两个点来描述起点和终点以及位于连接这两点的线上的任何点。这些波形可以通过 CompactRIO 模拟输出模块逐点输出。例如线性波形的一个示例是以 1V 增量从 -10V 斜坡到 10V更新之间间隔 1 秒。   CompactRIO 的线性波形应用         CompactRIO 为工程师和科学家提供了可定制、坚固耐用的便携式硬件解决方案用于生成线性波形。LabVIEW FPGA 模块与 CompactRIO 硬件配合使用为开发人员提供了最大的灵活性。开发人员可以使用 CompactRIO 构建硬件模块提供自定义任务、定时和触发。输出线性波形的能力使工程师能够在任何需要电压斜坡的应用中利用线性函数。例如工程师可以通过生成电压斜坡来对被测设备的可接受电压范围进行测试。凭借 CompactRIO 的灵活性他们还可以开发自定义模拟输入模块来分析响应。         CompactRIO 的灵活性使开发人员能够自定义其生成以在执行过程中不断更改更新速率、增益甚至波形。此外LabVIEW FPGA 模块还能够在同一 CompactRIO 硬件上以 25 纳秒的分辨率轻松自定义 FPGA 功能的定时和触发。如果应用需要线性响应与另一个因素例如外部信号的紧密同步则此功能非常有用。此外针对特定应用的 CompactRIO 定制通常可为开发人员和最终用户带来显着的成本效益。 CompactRIO 模拟输出模块的电压输出         LabVIEW FPGA 模块利用整数数学进行所有数学运算因此CompactRIO 的模拟输出操作必须利用所需输出电压的二进制代码表示。所需电压的二进制代码表示是通过将所需电压除以模块的代码宽度来确定的。模块的码宽或步长定义为系统可以输出的最小电压变化。码宽根据以下公式计算         例如cRIO-9263模拟量输出模块具有16位模拟量输出通道范围为-10V至10V。因此模块的码宽为 0.305176mV/步20V / 2^16 步。因此要输出 5.0 伏您需要将 5.0 V 除以 0.305176mV。该除法产生二进制值 16384。NI在每个模拟输出模块中包含一个 VI可以为您执行此转换。该VI将被命名为Convert to Binary (cRIO-XXXX)其中XXXX是模块的型号。它将包含在位于\examples\FPGA\CompactRIO\cRIO-XXXX\目录中的 cRIO-XXXX 支持文件 LLB 中。该VI图2通常在FPGA VI中使用将所需的电压值转换为该电压的二进制代码表示形式。您将向其提供您想要在标称值 (V)端子中输出的电压。校准终端是一个包含两个不同控件的集群偏移 (nV)和LSB 权重 (nV/LSB)。这些控件用于确定电压的二进制代码表示形式该电压通过二进制值端子返回。LSB权重 (nV/LSB)是模块的代码宽度偏移量 (nV)对应于您可能想要识别的任何偏移量。 通过阵列运算生成线性波形         在 CompactRIO 中执行线性波形生成的方法有很多种。不同的方法范围从数组操作到更高级的内存读写操作。这一系列不同的方法为开发人员提供了许多可以在各种应用中使用的不同选项。生成任何波形的一种快速、简单的方法是将点包含在数组中并以特定时间间隔对这些点进行索引。LabVIEW FPGA 模块中的数组         可以使用 LabVIEW FPGA 模块创建数组但是您只能使用固定大小的一维数组。您可以通过右键单击数组索引并选择“设置维度大小”将任何数组常量、控件或指示器设为固定大小。如果您的值始终保持不变请使用常量数组因为它们在 FPGA VI 中效率更高。注意为了优化编译时间请避免使用超过 32 个元素的数组因为它们需要 FPGA 上的空间。创建 LabVIEW FPGA VI 以输出数组         在 LabVIEW FPGA 模块中开发任何应用程序的第一步是开发将在 FPGA 上运行或综合的 VI。该 VI数组输出 VI利用 LabVIEW 的自动索引功能对数组进行逐点索引。从数组中提取输出值然后在 cRIO-9263 模拟输出模块的模拟输出通道 0 上输出。         该程序使用 LabVIEW FPGA 模块用户手册中推荐的序列结构来进行定时 I/O 操作。在第一个序列中我们使用循环定时器功能来控制模拟输出的更新速率。对于CompactRIO所有硬件时序都在我们的软件中定义因此我们可以通过简单地更改更新周期毫秒控制中的值来更改执行期间的更新速率。该程序中的循环将以 1/更新周期 (mSec)定义的速率执行。cRIO-9263 向一个模拟输出通道输出数据时最小更新周期为 3 微秒。这相当于每秒 333,333 次更新的最大更新速率。在程序的第二个序列中我们使用模拟输出功能将所需电压输出到 cRIO-9263 上的通道 0。 创建主机VI来执行目标VI         大多数LabVIEW FPGA应用程序的第二步是创建一个主机接口VI以与下载到硬件目标的FPGA VI进行通信。如图 4 所示执行阵列输出 VI 打开对阵列输出 VI 的引用该 VI 已通过“打开 FPGA 参考”功能下载到 FPGA 控制器。然后使用读/写控制功能设置VI的输出点数和更新周期毫秒控件的值。然后通过使用“调用方法”功能和“运行”命令该 VI 在 FPGA 上实际运行。它会等到VI运行完毕然后使用关闭FPGA VI引用函数关闭引用并检查错误。           对于由相对少量的点定义的波形来说通过数组进行索引来生成波形是完全可以接受的。请记住数组中的每个元素都会消耗 FPGA 上的许多门因此大型数组对于 LabVIEW FPGA 模块来说并不实用。然而FPGA 有 16KB 内存可用于存储。可以使用位于FunctionsFGPA Device I/OAdvanced FPGA Device I/O面板上的 Memory Read 和 Memory Write VI 来访问该存储器。  使用 LabVIEW FPGA 模块进行线性插值         LabVIEW FPGA 模块为开发人员提供了一种非常强大的方法来定义线性波形而无需创建值数组。借助 LabVIEW FPGA 模块您可以使用线性插值 VI 轻松计算线性波形上的值。线性插值 VI具有三个输入y0、y1和x 小数。y0是插值间隔的下限y1是插值间隔的上限。x小数表示区间[ y0 , y1 )内的评估点。x小数是一个无符号 16 位整数表示 [0,1) 范围内的小数对应于 [ y0 , y1 ) 创建的区间。例如x小数值0将给出y0处的值在y终端返回x小数值 32767 将给出y0和y1之间的中间值。         使用该VI您只需提供起点和终点以及插值评估点即可定义波形。例如如果您想输出总共 5 个点则可以输出y0 、 y0和y1之间的 1/4、1/2 和 3/4 处的值然后输出 y1。该波形可以通过使用x小数值 0、16383、32767、49151 执行线性插值然后输出y1处的值来创建。y1处的值被显式输出因为线性插值在 [ y0 , y1 )区间上求值该区间最后不包括y1 。因此x小数值 65535 不一定会输出y1 处的值。 通过线性插值生成线性波形         您可以使用带有 LabVIEW FPGA 的线性插值 VI通过提供y0起点和y1终点、要插值的点数以及x小数值来生成线性波形。插值位置可以通过编程方式确定通常使用运行求和。输出线性波形 VI如图 6 所示就采用了这种方法。该VI将通过基于起点和终点控件的插值输出在点数控件中定义的点数。线性插值最初将在x小数值为 0时完成并且该值将在每次迭代中增加插值增量值。         您可以通过手动提供控制值并运行VI来执行该VI。您还可以开发一个在主机上运行的VI该主机以编程方式执行该VI并与之通信。执行 - 输出线性波形 VI如图 7 所示是在主机上开发和运行的。它使用“打开 FPGA 参考”、“读/写控制”、“调用方法”和“关闭 FPGA 参考”功能。这些函数提供对 FPGA 的所有必要控制例如下载、读取或写入数据以及启动或停止 VI。此方法允许您快速更改执行所需的控件的值。您甚至可以将此 VI 应用于其他 VI以在 cRIO-9263 上执行输出作为更大项目的一部分。 插值算法示例         前面的示例重点介绍了基于线性插值生成线性波形的通用方法。您可以编写自己的算法来确定将沿起点和终点定义的线输出的值。一种常见的算法允许您在起点和终点之间添加均匀间隔的点以输出更高分辨率的波形。可以使用主机 VI 来确定 处的评估点该 VI 将确定 0 到 65535 之间的间距以适应起点和终点之间的点。您还可以在FPGA VI中使用一种算法以编程方式确定评估点。该方法使您能够简单地告诉 FPGA 代码在起点和终点之间放置多少个点从而确定波形的采样率。         利用整数的二进制表示和线性插值VI可以轻松实现这样一种算法。如果您回顾一下使用 LabVIEW FPGA 模块进行线性插值部分我们讨论了x小数控制。它是一个 16 位整数表示将发生插值的两点之间的位置。回想一下值 0 表示起点 ( y0 )值 32767 表示y0和y1之间的中间点。x小数的完整范围是 65535。该值的一半是 32767四分之一是 16383八分之一是 8191。如果我们查看这些数字的二进制表示形式图 8我们会看到二进制这些数字的表示只是前一个数字向右移动一位以二进制形式分成两半。         我们可以利用这种二进制移位来快速确定x小数的值应该是什么以在y0和y1之间添加 1、3、7、(2^n -1) 等点。请注意如果我们要添加 1 个点则x小数值为 3276765535 右移一次。如果我们添加 3 个点则x小数值将分别为 16383、32767 和 49151分别表示y0和y1 之间的 1/4、1/2 和 3/4。如果仔细观察这些数字的二进制表示形式您会注意到 32767 是 16383 16383在最低有效位进行 1 或运算49151 是 32767 16383在最低有效位进行 1 或运算。对于要在起点和终点之间添加的任何2^n - 1 个点该图案表面相同。因此如果您想在起点和终点之间添加2^n-1 个点您可以将 65535 右移n 个位置以获得第一个插值点。然后通过添加该初始值并与值 1 进行“或”运算来确定其余点。当达到可插值的最大值 65535 时插值值将替换为终点处的值。进行此替换的原因是因为插值间隔 [ y0 , y1 ) 不包括结束值因此我们将输出配置为最终更新的结束点。         线性输出 - 添加点 VI如图 9 所示使用该算法输出起点、中间的 2^n -1对于 n 0:15点以及终点。要添加的点(2^n-1)控件确定起点和终点之间包含的点数。请注意它被取反然后值 65535 移动了这个量相当于右移n位。while循环内的Sequence结构包括两个序列。第一个序列未显示有一个循环定时器VI和一个周期更新毫秒。该序列用于创建点的定时更新率类似于本教程中的其他两个示例。第二个序列是完成实际输出的地方。每次迭代插值在传递到x小数的位置完成线性插值VI的终端。该值在 cRIO-9263 模块的通道 0 上输出。通过将初始移位 65535 的结果相加来计算下一个插值然后将该结果与 1 进行或运算并连接到移位寄存器以进行下一次迭代。在最后一次迭代时当插值点为65535时输出End Point控件中的值程序结束。           您可以再次开发一个可在主机上运行的 VI该主机将以编程方式执行该 VI。下面的 VI执行线性输出 - 添加点在主机上开发并运行。通过主机上的该VI您可以多次调用该VI而无需手动与FPGA上的VI连接并且可以将该VI用作其他VI中的子VI。 使用线性插值生成分段线性波形         分段线性波形是由线性波形组合构成的波形。整个波形不是线性的但各个部分包括线性波形。您可以使用前面几节中描述的方法来输出分段线性函数。您可以轻松创建一个通过各个点描述波形的数组并且可以使用“使用数组操作生成线性波形”部分中所述的数组输出VI输出该波形。但是请记住数组会消耗 FPGA 上的门因此您不应创建超过 32 个元素的数组。因此您可以使用阵列方法来输出波形但请记住输出点数是有限的。         您可以组合使用“使用阵列运算生成线性波形”和“使用线性插值生成线性波形”部分中使用的 VI 来创建能够输出数千个点的波形发生器。我们已经描述了如何通过起点和终点定义线性波形并通过线性插值确定这两点之间的点。您可以将此方法扩展到分段线性波形因为您可以通过每个线性段的起点和终点定义分段线性波形。然后您可以通过在线性段的起点和终点之间进行插值来确定每个段中的点。         插值的位置可以通过许多不同的方式来确定。我们描述了一种利用 x小数值的二进制表示来确定插值位置的方法。我们可以利用该算法通过将其应用于每个线性段来输出重复的分段线性波形。该应用的一个示例可以在分段线性输出 - 添加点 VI 中看到如图 所示它输出连续波形。           该VI包含两个子VI计算X分数和计算索引使其能够循环遍历每个线性段并在每个线性段的起点和终点之间输出点。计算 X 分数 VI 接受插值位置当前 X 分数和插值位置之间的距离逐点增量。计算 X 分数 VI 添加逐点增量该增量是通过将 65535 移动n位来确定的。然后将此加法与 1 进行“或”运算就像之前的算法一样。当我们输出单个线性波形时当x小数值达到 65535 时我们会输出终点 ( y1 ) 。但是我们现在输出连续的分段线性波形因此我们可以输出下一个波形的起点如果我们假设波形中没有不连续性则分段。该值实际上应该与之前的y1位于相同的数组位置。因此当我们到达插值位置 65535 时我们只需将插值位置重置为 0并将起点和终点加 1。计算 X 分数 VI 通过检查添加增量的结果是否等于 65535 来考虑此翻转。如果是则它将下一个插值位置下一个 X 分数重置为 0并通过翻转返回 TRUE 值。终端连接到计算索引VI。 计算 X 分数 VI         计算索引VI使用计算X分数VI 的结果来确定插值的下一个起点和终点低索引输出和高索引输出。如果发生翻转意味着最后一段中的所有点都已输出则低索引和高索引将递增。但是由于我们输出重复波形因此必须将索引回滚到数组的开头。当每个传递数组中的最后一个元素时通过将低索引和高索引重置为 0 来完成此翻转。此更改是通过将值与数组的大小进行比较来完成的。   计算索引 VI           您可以轻松修改此示例通过识别高索引何时位于波形点数组 中的最后一个点来输出波形一次。然后您可以在输出该段中的最后一个点后将while 循环上的终止条件设置为TRUE 。请记住您还可以使用 FPGA 上的存储器来存储分段线性波形中的点。如果波形中有许多线性段可以轻松修改此示例以从内存中读取起点和终点。 FPGA上使用DFD和Coergen实现多相插值FIR滤波器         在不增加采样率的情况下将采样率从 50M 提高到 250M 或更高不是很好吗……通过数字滤波器设计 (DFD) 工具集和 Coregen 可以做到。 项目详情 正弦波生成频率为 100 kHz采集数据为 50 MHz500 个样本/周期项目目标 - 在 250MHz 下每周期 2500 个样本无法更改 50M 的硬件采样以实现 0.0004 秒的精度。         假设我们有一个周期信号每个周期仅包含 50 个点见下图。我需要检测哪个样本在 0.0004 秒内超过了某个阈值 原始信号         有多种方法可以实现此行为 1. 您可以对原始信号进行零填充然后将零填充信号与有限脉冲响应(FIR) 滤波器抽头进行卷积以生成信号。 零填充无卷积 零填充卷积 2. 将 FIR 生成的滤波器抽头抽取为“x”插值因子。一旦滤波器的设计符合我们的规格我们就会按照我们希望插值的因子来减少滤波器抽头的数量。例如在本例中我们以 5 倍插值将采样率从 50MHz 提高到 250MHz。其概念是如果每组滤波器抽头对同一数据点进行操作则卷积的加权平均值会产生点的投影。下面列出了结果的图像。 单点多个 FIR 滤波器 框图实现 **注意滤波器抽头的数量应能被插值整除否则点的投影将不那么准确。 多个 FIR 滤波器使用单点的结果         一旦我们在 Windows 仿真中确定滤波器工作正常我们就可以使用 FIR 滤波器中的抽取滤波器抽头供Coregen在 FPGA 上获得类似的结果。为了使用 FIR 抽头我们需要将它们写入各自的 .coe 文件将系数写入文件 VI 包含在 .zip 中。在此示例中由于我们插值了 5 倍因此我们将有 5 个独立的 .coe 文件。生成 .coe 文件后我们就可以在 Coregen 中使用它们。 **注  在本例中我们将使用用于 National Instruments LabVIEW 2010 VI 的 Xilinx IP。 在 Coregen 中使用 .coe 的步骤 1. 创建/打开 LabVIEW 项目。 2. 使用或模拟FPGA 目标。 3. 在 FPGA 目标上打开一个新 VI。 4. 在框图上导航至“Programming Xilinx Coregen IP Digital Signal Processing Filters FIR Compiler” 5. 双击 FIR Compiler VI 以启动 Coregen UI。 6. 选择 FIR 滤波器的名称以及您希望 Coregen 生成的文件所在的位置。 7. 单击启动 Xilinx 核心生成器。 8. 单击选择源并选择 COE 文件。 - 单击浏览...导航至 Set1 (\\DFD and COREGen Explanation\LabVIEW Code\FPGA\Coefficents\Set1.coe)。 9. 过滤器类型单速率。 10. 设置输入采样频率和时钟频率均使用顶级默认时钟 50MHz。 Coregen 第 1 页 11. 单击下一步移至第 2 页。 12. 单击下一步移至第 3 页。 13. 选中新数据 (ND) 和时钟启用 (CE)。 Coregen 第 3 页 **注  根据编译标准CE 可能会因高扇出和更高的时钟速率而导致时序违规。CE 终端不是必需的但可用于在 IP 核执行时进行门控。您还可以在 IP 核执行时使用 ND 进行门控。 14. 单击“下一步”移至第 4 页。 15. 单击“生成” - Coregen 将编译过滤器 16. 单击 Xilinx FIR Compiler v5.0 Node Properties 的 Next Page 2 17. 单击 Xilinx FIR Compiler v5.0 Node Properties 的 Next Page 3 18. 更改数据输入 (din) 和数据输出 (dout) 数据类型 - 根据要过滤的输入信号相应调整输入数据类型 (I16) ** 您需要调整 dout 以适应字和整数长度 (FXP/-32,17) Xilinx FIR 编译器 v5.0 节点属性第 4 页 19. 对每个 .coe 文件重复步骤 4-18 完成的 FPGA 框图 **注意  单周期定时循环(SCTL)不支持模拟输入 IO 节点除非它位于 FlexRIO 目标上。 20. 在编译 FPGA 之前您可以测试在 Coregen 中设计的滤波器。 - 参见 FPGA_Main_Simulation.vi - 将VI从FPGA Target移动到Windows Target进行仿真 Windows Coregen 模拟 前面板 框图 21. 验证仿真后您可以根据需要调整 FPGA VI 并进行编译。 **编程注意事项 1. 在另一台机器上打开 Coregen FIR 块时您需要重新编译它。 2. DFD 生成的滤波器抽头数量很大程度上取决于滤波器类型及其特性。 3. 默认情况下Coregen 将使用板载 DSP但是如果您用完 DSP则可以将滤波器架构更改为使用分布式算法。 4. 循环延迟由Coregen决定应注意确保所有滤波器同时输出可能需要向反馈节点添加延迟。 结论         CompactRIO 为工程师和科学家提供了可定制、坚固耐用且便携式的线性波形生成解决方案。LabVIEW FPGA 模块用于对 CompactRIO 硬件进行编程为开发人员提供了最大的灵活性。它使开发人员可以自由地创建具有硬件定时功能的独特模块。通过利用 LabVIEW FPGA 模块中的数组运算和线性插值功能开发人员可以轻松创建输出线性波形的波形发生器。LabVIEW FPGA 模块具有更多功能可让您执行非线性、周期和任意波形的输出。 PC 端 Sinc 插值实例 下列有香农插值公式实现了一个简单的Sinc插值算法。 给定实数序列x [ n ]连续函数 在左图中灰色曲线显示了时域中的函数 f(t)该函数以稳定增加的采样率进行采样黑点并重建以产生金色曲线。右图中红色曲线显示的是原函数f(t)的频谱没有变化。频谱中的最高频率是整个频谱宽度的 1/2。稳定增加的粉红色阴影代表重建函数的频谱随着采样率的增加它逐渐填充更多的原始函数的频谱。当重构函数的频谱包含原始函数的整个频谱时其宽度是最高频率的两倍此时重构波形与采样波形相匹配。 梯度数组插值 VI计算元素之间的差异从起始值到结束值进行线性插值。这有助于计算颜色梯度或预测线性尺度上数据集的缺失值。 图形插值-x轴值不相等 使用随机数生成器进行模拟并将它们组合成定制的波形图。使用数组 max 和 min.vi 提取 x 轴的最大和最小值这些值被传递到 Ramp Pattern.vi 。该VI的输出与原始采集数据一起用于插值1d.vi将所需数据输出到构建波形函数然后该函数输出波形。为了使绘图彼此相减dt 值x 轴通常需要匹配在这种情况下对齐波形单次。vi 获取数据并允许进行减法。此方法允许进行减法而不会在减法后导致意外的数据输出。 对Nan数组值进行数据插值 接受一个包含NaN不是数字值的数组并插入新值来填充NaN数据。 该VI设计用于处理具有恒定增量X值的数据该算法不适用于生成数组中的第一个或最后一个数据点。 此示例很有用因为使用 NaN 值插入数组中的新值。 使用 对于迭代每个数组值索引数组将查找 NaN 值。While 循环继续迭代数组直到找到有效数据查找长 NaN 链。之后For 循环生成缺失值最后一个已知值 步长*(i1)最后用数组子集替换 NaN 值。
http://www.pierceye.com/news/213087/

相关文章:

  • 做php网站教程视频国产长尾关键词拘挖掘
  • 网站首页置顶是怎么做网站运营专员做什么
  • 福建嘉瑞建设工程有限公司网站wordpress密码字典
  • 网站开发答辩设计预期目标卓进网站
  • 整站优化要多少钱番禺建设网站哪个好
  • 汕尾手机网站设计广州建设网站外包
  • discuz 做论坛与网站wordpress一键 centos
  • 网站推广智选刺盾云下拉老鹰网营销型网站建设
  • 摄像机怎么在自己家网站做直播python网站开发招聘
  • 府网站建设先进个人网站产品数据库
  • 美食网站设计网站手机商城图片
  • 广州网站开发 细致广州亦客网络sql注入网站建设百度云
  • 株洲网站设计外包首选每个网站都有后台吗
  • 网站运营管理员具体做什么企业网站搭建哪家好
  • wordpress网站导入数据库网站开发自荐信
  • 网站商城如何获取流量天合建设集团网站
  • 毕业设计做网站应该学什么2015年做哪个网站致富
  • 本地网站后台管理建设品牌网站建设解决方案
  • 广州黄埔区网站建设网页制作和网页制作设计
  • 做谷歌推广一定要网站吗成都 企业网站建设公司
  • 六安网站制作金狮网站更换域名备案吗
  • 最专业的手机网站制作广西网站建设设计
  • 如何在搜索引擎做网站企业咨询公司名字大全
  • 贵金属网站模板阿里云建设网站的流程
  • 维护一个网站要多少钱个人网页设计的主要内容和要求
  • 西安网站优化推广方案新网站做百度百科
  • 网站外链建设到底该怎么做flash网站案例
  • 成都私人网站制作卓越网站建设的优点
  • 做网站下载别人的图算不算侵权源码之家免费
  • 宁夏住房城乡建设厅网站应用网站建设