简易数字信号分析仪中的曼彻斯特码同步
来源:互联网 发布:我的世界 mod 知乎 编辑:程序博客网 时间:2024/05/16 16:07
上篇所转载的简易数字信号分析仪中从曼彻斯特码提取同步信号的代码我试了。烧到板子上,用示波器查看时波形有误。
“这是难点之所在(补出脉冲信号),采用的办法是应用计数器。采用一计数器counter和一个寄存器value,counter在系统时钟clk下计数,当clk_1 = 1时,也即遇到clk_1的高电平时,将counter的当前值与value进行比较,如果counter的当前值大于value,将counter当前值赋于value,之后counter清零,再次计数,当counter的当前值等于value/2时,这时,应该补出一个脉冲信号。”
基本思路不变。
经过修改后:代码如下:
module bitSyn_v4(clk_1 , clk,clk_6);inputclk,clk_1;//clk是50MHz时钟,clk_1为提取的跳变沿脉冲output clk_6; //clk_6是提取出的同步信号 //counter16位计数器,用于记录clk_1脉冲的低电平次数,之所以初始化,主要是考虑到modulesim仿真时观察它的变化,//寄存器value用于存入保持时间为T时的计数次数。reg [15:0]counter=0;reg [15:0] value;reg state,flag1,flag2,clk_2=0,clk_3,clk_4;wire clk_5,clk_6;wire clk_1;always@(posedge clk)begin counter <= counter + 1; if(clk_1) begincase(state) 0: begin value <= counter - 1; state <= 1; counter <= 0; end 1: begin if(value < counter) beginflag1 = 1;value <= counter; end if(value > counter) beginflag2 <= 1; end state <= 1; counter <= 0; endendcase end//我修改的主要是后半部分value/2不用减一。 //第一个if主要用于在 T/2处补出一个脉冲,clk_2一发生变化,则clk_6发生变化(assign语句的特性) if((counter == value/2 )&&((flag1 == 1)||(flag2 == 1))) begin clk_2 <= ~clk_2; end//第二个if 则是将clk_2由高电平变为低电平,以方便在下一个T/2处补出一个脉冲。 if(counter == value) begin clk_2 <= ~clk_2; endendassign clk_6 = clk_1|clk_2;//补出一个脉冲 endmodule
___博主写完分析之后贴出。。如果有人急着用的话,请留言。
- 简易数字信号分析仪中的曼彻斯特码同步
- 2011年全国大学生电子设计竞赛 E题: 简易数字信号传输性能分析仪
- 数字信号分析仪——作者sunev
- 曼彻斯特码编解码原理
- 数字信号的 FFT 分析
- 数字信号中的频率
- 简易频谱分析仪
- 数字信号处理中的归一化频率
- 数字信号
- 数字信号
- 简易文件同步工具
- 计算机网络 曼彻斯特编码---牺牲数据传输速率--但能实现收发同步
- 数字信号分析——基础知识点总结
- 数字信号分析——窗函数
- 曼彻斯特码编解码原理以及Verilog实现
- 曼彻斯特编码
- 曼彻斯特编码
- 曼彻斯特编码
- Android Bundle类
- 浏览器远程调试
- 插入排序
- oracle中的sequence的概念及作用
- Java中用父类定义子类的意思
- 简易数字信号分析仪中的曼彻斯特码同步
- position属性absolute与relative 详解
- hive 安装配置
- ssdt与shadowssdt区别
- c#通过反射查找接口的实现 并创造实例
- 使用HttpClient实现接口测试
- web app/mobile web开发入门
- Poj 1077 eight(BFS+全序列Hash解八数码问题)
- tostring