作者Faberge (就好像 可以拧出泪水一样)
站内Electronics
标题Re: [问题]请教各位前辈Verilog在I/O方面的技巧
时间Thu Aug 16 13:04:51 2007
※ 引述《MasterChang (我爱ASM)》之铭言:
: ※ 引述《Faberge (就好像 可以拧出泪水一样)》之铭言:
: : 小弟在Verilog方面是菜鸟 目前写好一个Block而且测试起来都都OK了
: : 想在输入输出端做些变化检查一下是否有意料不到的状况
: : 所以想丢一个Sine wave进入Block中 再检查输出是否有失真
: : 但是小弟不了解的是Sine wave绝对是一个类比讯号
: F(x) = sin(2*pi*f*t)
: f是你想产生的频率,t是时间,通常f*t就是你的sin table的
: index,不过F(x)会在-1到1间变化,对数位讯号不太匹配。
: 假设你的数位输出/入是8 bits,那就把信号调整在0~255间变
: 化那中心就是127.5
: F(x) = 127.5*sin(2*pi*f*t)+127.5 ,用这去建sin table,
: 得到的值四舍五入变成整数。
: : 我们该如何有效将它变成一个数位讯号当作输入
: : 比方决定Sine wave振幅 频率 以及输入端取样频率
: 比如说你的table长度是1000点,每次输出的时间间隔是1us,
: 那一个波的周期就是1ms,频率就是1K ,这个应该用心算就算
: 了出来了...XD
: : 这中间该用什麽程式或指令进行转换的工作
: 我是用Excel这类帮你算,听说有些IDE很厉害有这类建表的工具...
: : 同时想请教客位前辈是否有软体可以提供我的输入对时间与输出对时间的图形?
: : 这样能够更清楚的看出输出波形有无失真以及输入波形是否正确
: : 还麻烦各位前辈不吝指教! 感恩啊!!
: 1.这要看你用的模拟软体。
: 2.如果你是用FPGA,最好直接在硬体上验证。
自己来回答自己一下 经过MasterChang的指点以後我用EXCEL做了一个Sine Wave的ROM
然後再加上一个CLK去控制他的输入时间
把Sine的值向上拉成0~2之间的旋波 在乘上2^9倍 顺便把这个值round
变成一个10bit的integer讯号 之後只要调整自己的输入时间
就可以让input的时间跟他的时间频率不同 造成不同的sampling value
但是缺点是他不能算我在bit与bit之间的值 所以要用倍数频率来sampling
模型如下
module rom (data_out, clock);
input clock;
output [15:0] data_out;
reg [15:0] data_out;
integer [9:0] i;
initial
begin i=0; end
always @ (posedge clock)
begin
case (i)
9'd0 : begin data_out = 512; i=i+1; end
9'd1 : begin data_out = 521; i=i+1; end
9'd2 : begin data_out = 530; i=i+1; end
9'd3 : begin data_out = 539; i=i+1; end
9'd4 : begin data_out = 548; i=i+1; end
:
:
:
9'd356 : begin data_out = 476; i=i+1; end
9'd357 : begin data_out = 485; i=i+1; end
9'd358 : begin data_out = 494; i=i+1; end
9'd359 : begin data_out = 503; i=0; end
endcase
end
endmodule
实在是一个很土法炼钢的方法,但是可以保证在输出的时候会得到顺利的Sine Wave波形
我有在网路上看到用演算法去求出两个整数角度之间的值,如果成功的话再丢上来做参考
现在想另外请问的是 小弟用的是VCS6.0.1的软体 还有VerSim可以看每个时间的状态
但是很想把输出的值对到excel上
不知道有没有这样的指令可以让小弟做到输出成excel的指令?
又要麻烦各位前辈了! 肛温啊!! orz!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.229.135.97
1F:推 bighead319:你的电路不能合成 08/18 01:53
2F:推 Faberge:对啊 我不是要合成电路 我只是作一个test bench用 08/20 15:53
3F:推 happycompany:既然只是要做test bench, 可以不用这麽麻烦 08/21 01:24