- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正尝试在带有 Xilinx Vivado 的 Virtex 7 上的 SystemVerilog 中实现 QAM 调制器,但我对本地振荡器的 sin 和 cos 的生成感到困惑。
更具体地说,我有 I 和 Q 信号(每个 3 位)作为输入,我必须分别将它们与余弦波和正弦波相乘。乘法工作正常,但我需要一个 IP 来生成给定频率的余弦和正弦。
为此,我深入阅读了以下链接提供的 DDS Compiler v6.0 文档,但我仍然卡住了: http://www.xilinx.com/support/documentation/ip_documentation/dds_compiler/v6_0/pg141-dds-compiler.pdf
有没有人有任何建议或示例代码可以帮助我?
先谢谢你了
请在下面找到一些屏幕截图和我的示例代码。我不明白的是为什么 sin/cos 会采用这些“奇怪”的值。我是否正确使用了 dds_compiler?
截图和Vivado工程(我还没有权限直接发):https://www.dropbox.com/s/xi5hralr2klk37s/dds_compiler.zip?dl=0
调制器.sv :
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 31.03.2015 07:41:17
// Design Name:
// Module Name: modulator
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module modulator(
input logic clk,
input logic [2:0] I,
input logic [2:0] Q,
output logic [18:0] p1,
output logic [18:0] p2,
output logic tvalid
);
// internal signals
logic [15:0] sin,cos;
// carrier generation
dds_compiler_0 dds_compiler_0_inst(
.aclk(clk),
.m_axis_data_tdata({sin,cos}),
.m_axis_data_tvalid(tvalid)
);
// multiplier
mult_gen_0 mult_gen_0_inst_1(
.CLK(clk),
.A(I),
.B(cos),
.P(p1)
);
mult_gen_0 mult_gen_0_inst_2(
.CLK(clk),
.A(Q),
.B(sin),
.P(p2)
);
endmodule
调制器_测试台.sv :
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 31.03.2015 07:41:17
// Design Name:
// Module Name: modulator_testbench
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module modulator_testbench();
// test signals
logic clk;
logic [2:0] I, Q;
logic [18:0] p1,p2;
logic tvalid;
// generate clock
always begin clk=1; #5; clk=0; #5; end
// instantiate dut
modulator dut(
.clk(clk),
.I(I),
.Q(Q),
.p1(p1),
.p2(p2),
.tvalid(tvalid)
);
// start simulation
initial begin
#65;
I=3'd1; Q=3'd1; #10;
I=-3'd1; Q=3'd1; #10;
I=3'd3; Q=-3'd3; #10;
I=-3'd3; Q=-3'd1; #10;
I=3'd1; Q=-3'd1; #10;
end
endmodule
最佳答案
感谢 dieli 的评论,一切正常。我在这里总结它以防它可以帮助其他人:
每个时钟周期都会添加设置的相位增量(在我的例子中为“1100”)。因此,由于我使用的是 16 位总线,所以一个 sin/cos 需要大约 5461 个时钟周期。然后我们可以使用数据表中给出的公式轻松计算输出频率。要使用 Vivado 查看 sin/cos 波,请右键单击 sin/cos 信号并选择“波形样式”,然后选择“模拟”。(确保您运行模拟足够的时间。)
关于fpga - 使用 Vivado 在 Virtex7 上生成 sin/cos,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29235696/
我刚开始研究 C#,冗长的数学函数让我很烦。是否有标准的方法来编写 Cos(或任何其他 Math 函数)而不是 Math.Cos 而无需定义您自己的 Cos 函数? 最佳答案 切换到新的 Roslyn
我通过 R 运行 WolframAlpha Wolfram Alpha API from R 我的问题是,我需要将 wolfram 输出转换为 R 表达式。我在需要的地方添加了“*”,还有另一个问题
我遇到了一些应该很容易回答的问题,但我不能 Handlebars 指放在上面。自从我做了一些三角函数以来已经有一段时间了。 double cosValue = -2.7105054312E-20; /
如何重现此行为? https://isocpp.org/wiki/faq/newbie#floating-point-arith2 准确的说,在下面的代码中,参数x和y是相等的;它们可以等于 1.0
JavaScript 中的所有数学函数都使用弧度代替度数。然而,它们要么不相等,要么我离题太远。 从度数到弧度的转换是: var rad = angle * Math.PI / 180 90 度 An
这个问题已经有答案了: How can I get sin, cos, and tan to use degrees instead of radians? (6 个回答) 已关闭 9 年前。 cos
这是怎么回事?? 测试 sin 和 cos 函数以找出为什么在将我的坐标输出到 SVG 文件时我在错误的位置得到如此漂亮的定位。所以我做了这个测试代码,我可以预测答案是什么来找出原因。奇怪的是,没有任
这个问题在这里已经有了答案: 关闭10 年前。 Possible Duplicate: C Build error when getting the value of sin() 我试图在这段时间内
在 Javascript 中使用 a.b(c) 或 [a.b][0](c) 是不同的,原因是 this 的绑定(bind)> 在 a.b 的代码执行期间是否发送给对象 a。 使用相同的推理 var z
这是一个很简单的问题,让我很困惑。 我收到一个源文件的以下错误,但另一个没有: 4 src/Source2.cpp:1466: error: no matching function for cal
如何只使用 sin 或 cos 而不是 Math.sin 或 Math.cos?我尝试导入 Math.* 但我想我可能需要对命名空间做一些事情? 最佳答案 import static java.lan
测试代码: #include #include const int N = 4096; const float PI = 3.1415926535897932384626; float cosin
代码片段1: from sympy import symbols, integrate, cos, pi from numpy import sqrt n = symbols('n', integer
我正在使用 Taylors series 来计算一个数字的 cos,对于小数字,该函数返回准确的结果,例如 cos(5) 给出 0.28366218546322663 。但是对于较大的数字,它会返回不
我是一个完全的编程初学者,我被分配了以下任务: 编写一个 C++ 程序,使用一系列内接和外接正多边形计算一对 π 的估计值。在不超过 30 步后停止,或者当外接多边形和内切多边形的周长之差小于 ε=1
我正在尝试使用余弦和正弦,但它们没有返回我期望的值。 #include #include #include int main() { float magnitudeForce;
我有一个作业要编写一个程序来通过 Maclaurin approximation 计算 cos(x) .但是,我必须为 cos(x) 使用一个函数,并使用另一个函数来计算 cos(x) 函数内的分母上
我正在尝试使用 Python2.7 对方程式进行数值求解。这是整个代码: from sympy import * from sympy import Symbol from sympy.solvers
因此,我正在尝试创建一个使用泰勒近似计算 cos(x) 的程序。 程序非常简单:用户输入一个参数 x(x 是以弧度为单位的角度)和一个 float ε,它是 cos(x) 值的精度。 基本上,程序唯一
我正在尝试将内部 cos() 函数调用插入 LLVM 传递。我在 FunctionPass 中的代码: std::vector arg_type; arg_type.push_back(Type::g
我是一名优秀的程序员,十分优秀!