SOC设计:关于时钟门控的细节

本文详细描述了软件配置的时钟门控电路,涉及输入信号如rstnsync_clk、clk和test_mode,以及控制信号clk_sub_en。通过时钟同步和工艺库中的门控单元生成门控时钟clk_sub,适用于不同工艺技术的FPGA、ARM和TSMC平台。
摘要由CSDN通过智能技术生成

有如下几个信号

输入信号

1、同步后的rstnsync_clk

2、时钟:clk

3、test_mode

4、软件控制信号:clk_sub_en

输出信号

1、clk_sub

功能:软件配置的使能信号clk_sub_en经过时钟clk 2拍同步处理后产生clk 域下的enable信号,然后使用工艺库里的时钟门控cell产生门控时钟clk_sub

使用工艺库里的门控时钟原因如下

clkgating_lte u0_clk_sub_gen (
    .rstn                           (rstnsync_clk                            ), // input  
    .clk_in                         (clk                                     ), // input  
    .test_mode                      (test_mode                                  ), // input  
    .gating                         (clk_sub_en                               ), // input  
    .clk_out                        (clk_sub                                  )  // output
);
 

module clkgating_lte (
        rstn,
        clk_in,
        test_mode,
        gating,
                clk_out
        );

input        rstn;
input        clk_in;
input        test_mode;
input        gating;
output        clk_out;

wire            gatingSync1;
wire            gatingSync2;
 

dsync2s u_dsync2s(.q(gatingSync2), .d(gating), .clk(clk_in), .rst_(rstn));

clk_gate u_gating (.TE(test_mode), .E(gatingSync2), .CK(clk_in), .QCK(clk_out));

endmodule

// clock gate
module clk_gate (CK, E, TE, QCK);
input    CK;
input    E;
input    TE;
output    QCK;
`ifdef    FPGA
    assign QCK = CK;
`else
    `ifdef    ARM_22ULP_9T
        PREICG_X4B_A9PP140ZTS_C35 U_gate (
        .SE(TE),
        .E (E),
        .CK(CK),
        .ECK(QCK)
        );
    `elsif  ARM_22ULP_6T
        PREICG_X4B_A6P5PP140ZTS_C35 U_gate (
        .SE(TE),
        .E (E),
        .CK(CK),
        .ECK(QCK)
        );
    `elsif    TSMC_22NM_9T
        CKLNQD2BWP35P140 donttouch_cg_pos (
        .TE(TE),
        .E (E),
        .CP(CK),
        .Q (QCK)
        );
    `else
        CKLNQD2BWP7T35P140 donttouch_cg_pos (
        .TE(TE),
        .E (E),
        .CP(CK),
        .Q (QCK)
        );
    `endif
`endif
endmodule // pmu_clk_gate

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
### 回答1: Costas环是一种常用的调制器电路,它可以解决载波相位偏移问题,使其能够在高要求的无线通信应用中得到广泛应用。在电路设计中,Verilog是一种常用的硬件描述语言。因此,Costas环Verilog代码被广泛使用。 Costas环Verilog代码由一系列Verilog语法指令组成,这些指令定义了Costas环调制器的各种参数和功能。Typically,它包括模拟调制器、数字控制器和频率锁定环等子模块。 模拟调制器接收信号后,使用正弦波和余弦波生成两条相互正交的基带信号,对信号进行分析和解调。阈值检测器对信号进行分类并输出数字控制器。数字控制器根据阈值检测器输出和调整计数器的相位,从而实现在相反方向上的调制。频率锁定环实现一个带通滤波器,通过相位误差信号使基准信号和本地振荡更加稳定,并产生相位同步输出。 Costas环Verilog代码主要用于FPGA、ASIC、SoC等数字电路平台,可以实现高速、低功耗、高可靠性的无线通信应用。同时也可用于模拟电路仿真、电路板印制、优化和调试。通过高效的Costas环Verilog代码设计,可以使无线通信系统具有更好的性能和更高的可靠性。 ### 回答2: Costas环是一种相位锁定回路,被广泛应用于数字通信和调制技术中。这种电路能够将一个输入的信号从频率也就是相位上与一个参考频率或相位同步。Verilog是一种硬件描述语言,常用于设计和验证数字电路。下面简单介绍一下Costas环的Verilog代码。 Costas环通常由两个相位锁定环组成,其中一个用于解调信号,另一个用于调整相位。这两个相位锁定环可以通过PLL(锁相环)来实现。在Verilog中,可以利用周期性函数和状态机等模块来实现PLL的功能。下面是一个简单的Costas环Verilog代码: ``` module costas ( input clk, input reset, input data, output reg out ); reg [7:0] phase1; reg [7:0] phase2; reg [7:0] phase_error; reg out_d; reg [7:0] gain; always @(posedge clk) begin if(reset) begin phase1 <= 8'h0; phase2 <= 8'h0; gain <= 8'h0; out_d <= 1'b0; end else begin phase1 <= phase1 + phase_error + gain; phase2 <= phase2 + phase1 + gain; gain <= gain + (data - out_d) * 8; out_d <= data; end if(phase2 >= 8'h80) out <= 1'b1; else out <= 1'b0; phase_error <= (data-0.5) * 8'h10 - phase1; end endmodule ``` 在这个代码中,我们首先定义了一些寄存器用于存放Costas环中的一些状态值,比如相位、增益、相位误差等。然后,我们使用always块在时钟上升沿时更新这些状态值。在更新状态值的过程中,我们根据输入信号的状态来动态地调整相位和增益。最后,我们使用相位值来输出解调后的数字信号out。 总的来说,这个Costas环的Verilog代码相对简单,但也足够展示出相位锁定环的基本结构和实现方式。根据具体应用场景和需求,还可以对代码进行进一步的优化和改进。 ### 回答3: Costas环是一种数字信号处理器件,用于调制和解调正交信号。 Verilog是一种硬件描述语言,用于编写数字电路的设计。 Costas环的Verilog代码通常分为两部分:模块和测试台。模块是用来实现Costas环功能的主要代码部分,测试台是用来模拟输入数据并验证模块功能的部分。 以下是一个简单的Costas环Verilog代码示例: module costas ( input clk, //时钟信号 input [7:0] indata, //输入数据 output [7:0] outdata //输出数据 ); reg [7:0] state; //状态寄存器 //Costas环实现代码 always @(posedge clk) begin state <= indata; //输入数据存储到状态寄存器中 /* 在这里执行解调操作 */ outdata <= state; //解调后的数据输出 end endmodule 测试台也是非常重要的部分,用于验证Costas环的功能是否正确。在测试台中,需要模拟输入信号和时钟信号,并将输出信号与实际期望输出进行比较。以下是一个简单的测试台Verilog代码示例: module costas_tb; reg clk; reg [7:0] indata; wire [7:0] outdata; //生成时钟信号 initial begin clk = 1'b0; forever #20 clk = ~clk; end //模拟输入数据 initial begin indata = 8'hFF; //输入数据赋值为全1 #40 indata = 8'h00; //等待40个时钟周期后,将输入数据赋值为全0 end //调用Costas环模块 costas coc ( .clk(clk), .indata(indata), .outdata(outdata) ); //比较输出信号是否与期望相符 initial begin #60 $finish; //等待60个周期后结束测试 end endmodule 在以上的代码示例中,我们可以通过编辑模块和测试台的代码来实现自己的Costas环数字电路设计,并通过仿真验证电路的功能是否正确。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值