|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2014-7-31 12:51:14
|
显示全部楼层
本帖最后由 grantlu 于 2014-7-31 12:55 编辑
关于:
问题1:因为 屏幕的分辨率是 1024 * 600, 其中字符显示占用了一些,用来显示波形的位置我取整数 500,所以 AD 得到的值加上 偏移量 我取中间 500 左右的范围用于波形显示。
问题2:其实很大一部分原因是因为我在设计这实验示波器前没有参考过其他人的设计,只是自己所想去随意的买些器件,再根据自己买的器件搭接起来,没注意到市面上有相当方便的可编程增益放大器,和专用的 AD 驱动芯片,而且很多时候是手上有什么器件,就拿来将就用用,我这种接法其实是不太匹配的,我只记得在实验过程中发现这 AD 芯片量程范围是 +/- 1/2 Ref(大概是吧,我现在也记得不是很清楚了) ,你注意看看图纸 AIN的负端 不是接中点电压,是大约 0.2V 的电压,这样接只是为了让量程能够往 负压方向偏移些,因为在我自己的实验板上已经取消了外置的 直流偏位调节,即 U7、U8 都没有使用,另外 U5 也被我取消了,触发信号是在 FPGA 内部完成的(不是很理想)。
问题3:这在之前就探讨过我的原理,是由 32 个波形叠加而成的,只要将一次采样的数据存入 RAM ,在 LCD 刷新时就会自动显示出这波形,最后在:
always @(posedge pixclk)
begin
dw_multi1 <= dw_00 + dw_01 + dw_02 + dw_03 + dw_04 + dw_05 + dw_06 + dw_07;
dw_multi2 <= dw_08 + dw_09 + dw_10 + dw_11 + dw_12 + dw_13 + dw_14 + dw_15;
dw_multi3 <= dw_16 + dw_17 + dw_18 + dw_19 + dw_20 + dw_21 + dw_22 + dw_23;
dw_multi4 <= dw_24 + dw_25 + dw_26 + dw_27 + dw_28 + dw_29 + dw_30 + dw_31;
end
合成。
这里的每一个 dw_xx 都是一个独立的波形。而每个独立的波形是在: DwSingleWave 里完成的,而 DwSingleWave 里是依据
WaveDat U_waveRam(
.data (ad_dat),
.rdaddress (rd_add),
.rdclock (pixclk),
.wraddress (wr_add),
.wrclock (adclk),
.wren (wr_en),
.q (wdout));
来画波形的,只要将数据存入: WaveDat 就行。
我前面说过我只是按自己的想法来完成了我的实验示波器,可能和其它的数字余辉不一样,或许我这不叫余辉,就是我在:
http://www.amobbs.com/thread-5567039-1-1.html 帖子里说的:
xingliu 发表于 2014-1-17 14:05
32 级灰阶:32个波形,意思是不是,触发采样了32次,屏幕上从左到右,每个点都包含了32个值,每个点显示的 ...
不是平均,而是叠加!举例说明,假设屏幕上的32 个波形是完全的横线,而每根横线都在不同的位置上,那么所有的横线亮度就为 1/32 ,如果是 8 bit 的液晶屏时,那么
所有的线的亮度数值就是 8,如果有两根横线刚好在同一位置,那么重叠的那根线亮度就是 16,如果所有的横线都在同一个位置,那么它的亮度就是 最亮 255。
|
|