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

mac做网站的软件常用的seo查询工具有哪些

mac做网站的软件,常用的seo查询工具有哪些,网店推广方案范文,深圳华强北赛格大厦最新消息格雷码异步FIFO跨时钟域处理 格雷码 一、格雷码规律 相邻性:相邻两个数的格雷码只有一位不同,例如: 0000 → 0001(仅最低位变化)0001 → 0011(仅次低位变化)0011 → 0010(仅最低位…

格雷码+异步FIFO+跨时钟域处理

格雷码

一、格雷码规律

  1. 相邻性:相邻两个数的格雷码只有一位不同,例如:
    • 00000001(仅最低位变化)
    • 00010011(仅次低位变化)
    • 00110010(仅最低位变化)
  2. 循环性:首尾两个数(00001000)也只有一位不同,适用于环形计数。
  3. 对称性(反射特性):
    • 前一半和后一半的格雷码是镜像对称的。
    • 例如,4位格雷码的前8个和后8个码是镜像对称的,最高位为01
  4. 递归生成
    • n位格雷码可以通过n-1位格雷码生成:
      1. 在n-1位格雷码前补0,得到前一半。
      2. 将n-1位格雷码逆序排列后前补1,得到后一半。

二、4位格雷码的完整序列

以下是4位格雷码的16个值(从0到15的十进制对应):

0: 0000    8: 1100
1: 0001    9: 1101
2: 0011   10: 1111
3: 0010   11: 1110
4: 0110   12: 1010
5: 0111   13: 1011
6: 0101   14: 1001
7: 0100   15: 1000

三、生成格雷码的技巧

  1. 二进制转格雷码
  • 公式
    ​格雷码 = 二进制码 ^ (二进制码 >> 1)​
    例如:二进制数0110转换为格雷码:

    二进制:0110
    右移1位:0011
    异或(^)结果:0101 → 格雷码
    
  • 硬件实现
    在Verilog中可以直接用异或逻辑实现:

    gray_code = binary_code ^ (binary_code >> 1);
    
  1. 递归生成法
  • 步骤:
    1. 1位格雷码:0, 1
    2. 2位格雷码:00, 01, 11, 10
    3. 3位格雷码:在前补0得到000, 001, 011, 010,逆序后补1得到110, 111, 101, 100
    4. 4位格雷码:同理递归生成。
  1. 镜像对称性
  • 前8个码(0-7)和后8个码(8-15)对称,仅最高位不同。

四、应用技巧

  1. 计数器设计
    使用格雷码计数器可以减少功耗(相邻状态只有一位翻转),常用于低功耗设计。
  2. 避免错误传播
    在异步电路中,格雷码可以避免因多比特同时翻转导致的瞬时错误。(如 FIFO)
  3. 环形编码器/解码器
    格雷码的循环性适合用于旋转编码器(如机械编码盘)。

异步FIFO

双端口RAM设计 → 二进制地址计数器 → 格雷码转换 → 跨时钟域同步 → 满空状态判断 → 控制信号生成

1.双端口RAM设计

  • 功能:提供存储单元,支持读写操作在不同时钟域(wclkrclk)下进行。

  • 使用二维数组RAM_MEM实现存储空间。

module ram_mod(input clk,input rst_n,input write_en,input [7:0]write_addr,input [3:0]write_data,input read_en,input [7:0]read_addr,output reg [3:0]read_data
);reg [3:0] mem[0:127];integer i;always @(posedge clk or negedge rst_n) beginif(!rst_n) beginfor(i=0;i<128;i=i+1) beginmem[i] <= 4'b0;endendelse if(write_en) beginmem[write_addr] <= write_data;endendalways @(posedge clk or negedge rst_n) beginif(!rst_n)read_data <= 4'b0;else if(read_en)read_data <= mem[read_addr];endendmodule

2.地址计数器与格雷码转换

二进制地址计数器

  • 读写操作分别维护一个二进制计数器(w_binaryr_binary)。
  • 写地址递增条件:winc && !wfull(非满时允许写)。
  • 读地址递增条件:rinc && !rempty(非空时允许读)。

格雷码转换

  • 二进制地址转换为格雷码(w_addrr_addr),减少跨时钟域同步时的亚稳态风险。
  • 转换公式:gray = binary ^ (binary >> 1)
	//地址 使用格雷码reg [ADDR_WIDTH:0] w_addr;reg [ADDR_WIDTH:0] r_addr;reg [ADDR_WIDTH:0] w_binary;reg [ADDR_WIDTH:0] r_binary;//二进制转格雷码//assign w_addr = w_binary ^ (w_binary >> 1);;//assign r_addr = r_binary ^ (r_binary >> 1);always @(posedge wclk or negedge wrstn) beginif(!wrstn)w_addr <= 'b0;else   w_addr <= w_binary ^ (w_binary >> 1);endalways @(posedge rclk or negedge rrstn) beginif(!rrstn)r_addr <= 'b0;else   r_addr <= r_binary ^ (r_binary >> 1);end// 二进制计数器always @(posedge wclk or negedge wrstn) beginif(!wrstn)w_binary <= 'b0;else if(winc && !wfull)w_binary <= w_binary + 1'b1;else  w_binary <= w_binary;endalways @(posedge rclk or negedge rrstn) beginif(!rrstn)r_binary <= 'b0;else if(rinc && !rempty)r_binary <= r_binary + 1'b1;else  r_binary <= r_binary;end

3.跨时钟域同步

目的:将读地址同步到写时钟域,写地址同步到读时钟域。

实现:打两拍

在读时钟域进行空状态判断;在写时钟域进行满状态判断。

同步后地址用于满空判断

4.空满状态判断

当读写指针相等时,得出FIFO为空

当写指针比读指针多循环RAM一周时,此时读写指针的最高位和次高位都相反,其余位相同,FIFO为满

assign wfull = (w_addr == {~r_addr_temp2[ADDR_WIDTH:ADDR_WIDTH-1],r_addr_temp2[ADDR_WIDTH-2:0]}) ? 1'b1 : 1'b0;
assign rempty = (w_addr_temp2 == r_addr) ? 1'b1 : 1'b0;

写满(wfull):

​ 其中~r_addr_temp2[ADDR_WIDTH:ADDR_WIDTH-1],r_addr_temp2[ADDR_WIDTH-2:0]

​ 表示:写指针比读指针多循环RAM一周时,此时读写指针的最高位和次高位都相反,其余位相同

​ 解释:深度为16时,写地址为18(格雷码 11011),读地址为2(格雷码 00011)

读空(rempty):

​ 同步后的写指针w_addr_temp2与读指针r_addr相等

5.控制信号生成

  • 写使能(wen)wen = winc && !wfull(非满且请求写时有效)。
  • 读使能(ren)ren = rinc && !rempty(非空且请求读时有效)。
  • 直接控制RAM的读写操作

跨时钟域处理

https://blog.csdn.net/emperor_strange/article/details/82491085?utm_source=app

https://mp.weixin.qq.com/s?__biz=MzkwNTIwNTA2NA==&mid=2247484703&idx=1&sn=78bc0a3dd5b8bffa6972e3b40b1dd43b&chksm=c14480d45c29cb0ddf7f2b0cecba84d6b79d0e21f28d2ba1eeb049fe664f1a89234c0ca15df6#rd

  • 处理亚稳态的方法:

    多级寄存器

    异步FIFO缓存

分为从快到慢、从慢到快两种情况。

1.从快到慢

​ 参考牛客网编程题VL49 脉冲同步电路将快时钟域的脉冲信号扩展为电平信号

​ 检测 data_in 信号的边沿,作为电平信号的判断条件。

`timescale 1ns/1nsmodule test(input 				clk_fast	, input 				clk_slow	,   input 				rst_n		,input				data_in		,output  		 	dataout
);//检测边沿reg data_in_temp1,data_in_temp2;wire data_in_pos;assign data_in_pos = data_in_temp1 & !data_in_temp2;always @(posedge clk_fast or negedge rst_n) beginif(!rst_n) begindata_in_temp1 <= 1'b0;data_in_temp2 <= 1'b0;endelse begindata_in_temp1 <= data_in;data_in_temp2 <= data_in_temp1;endend//脉冲转电平reg active;always @(posedge clk_fast or negedge rst_n) beginif(!rst_n) active <= 1'b0;else if(data_in_pos)active <= !active;else  active <= active;end	//在慢时钟打两拍reg active_temp1,active_temp2;always @(posedge clk_slow or negedge rst_n) beginif(!rst_n) beginactive_temp1 <= 1'b0;active_temp2 <= 1'b0;endelse beginactive_temp1 <= active;active_temp2 <= active_temp1;endendassign dataout = active_temp1 ^ active_temp2;endmodule

在这里插入图片描述

脉冲电平转换——打两拍——边沿检测

2.从慢到快

“打两拍”+边沿检测

​ 将慢时钟域信号通过快时钟的连续两级触发器同步。第一级触发器采样可能进入亚稳态,第二级触发器显著降低亚稳态传播概率。

http://www.dtcms.com/wzjs/389980.html

相关文章:

  • 专业的公司网站制作服务免费推广网站
  • 网页版微信怎么截图山东关键词优化联系电话
  • 自助式网站制作淮北网络推广
  • 做网站赤峰连云港网站seo
  • 做网站主页效果图十大搜索引擎入口
  • 网站开发设计比赛企业管理培训视频免费
  • 网站模板安装百度软件市场
  • 免费自己做网站精准引流推广公司
  • 网站制作中企动力公司成功品牌策划案例
  • 付费网站怎么制作2345手机浏览器
  • 画册设计说明怎么写南宁seo优化公司
  • 广州华优_网站建设公司网站做seo教程
  • 大连网站建设1000元宁波怎么优化seo关键词
  • 做类似淘宝的网站前景关键词优化排名哪家好
  • 企业网站建设亮点长沙优化科技有限公司
  • 网站建设 数据分析吸引人的软文标题例子
  • 做动态网站 需要哪些知识国际新闻最新消息2022
  • html5在线编辑器班级优化大师的功能
  • 电商建站工具郑州网络推广培训
  • 投注网站建设需要多少钱西安百度快速排名提升
  • 网站建设人员任职要求谷歌浏览器手机版下载
  • 全国加盟网站建设seo教程百度网盘
  • 建设手机网站报价淘宝运营培训
  • 自己的电脑做服务器 并建网站站长网站seo查询
  • 做销售的 都有什么网站临沂百度推广多少钱
  • 网业浏览设置在哪上海网站seo策划
  • 网站加入地图营销方案网站
  • 南宁网站建设公司口碑营销的优势有哪些
  • 网络推广就找南昌莫非传媒seo关键词排名优化
  • 做导航网站用什么建站程序免费下载app并安装