<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[cjhuster1的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/cjhuster1</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; cjhuster1]]></copyright><item><title><![CDATA[门控时钟的写法]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/116075567</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/116075567</guid><author>cjhuster1</author><pubDate>Fri, 23 Apr 2021 23:20:55 +0800</pubDate><description><![CDATA[原则：不动clk, 因为会导致时钟信号的抖动，导致触发器的时序违例。
写法:
module clock_gating_FF (output Q, input D, clk, rst, gate_signal);
always@(posedge clk)begin
if(rst) Q &lt;= 0; else if (gate_signal) Q &lt;= D; // 缺省条件下，值会被保存；
end
endmodule

...]]></description><category></category></item><item><title><![CDATA[序列检测器]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/116074500</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/116074500</guid><author>cjhuster1</author><pubDate>Fri, 23 Apr 2021 22:46:11 +0800</pubDate><description><![CDATA[序列检测器
目标检测连续的三个1；（6.6.4章节）
第一种方法是采用状态机；
第二种方法是用移位寄存器来存储输入值，并检测寄存器的值是否和预设的序列相匹配。

]]></description><category></category></item><item><title><![CDATA[第六章 组合逻辑和时序逻辑的综合]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/116062002</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/116062002</guid><author>cjhuster1</author><pubDate>Fri, 23 Apr 2021 21:29:33 +0800</pubDate><description><![CDATA[6.1三种模型与三种描述
三种模型：架构级模型，逻辑级模型，物理模型；
三种描述：行为描述，结构描述，物理描述；
ASM 图是逻辑级的行为描述；
逻辑综合是将行为描述转换成结构描述；
6.2 组合逻辑的综合

UDP 用户自定义原语大多数厂商不可综合；
当原语可以用单元库中的门替代时，得到的电路是比原电路更为有效的门级实践；
for 语句是可综合的，综合时将其展平；
case 和 if 语句的综合，如果条件都是互斥的，综合工具会认为他们具有相等的优先级，并综合成一个多路选择器；若条件不互斥，则第一个语句分支]]></description><category></category></item><item><title><![CDATA[写testbench的基本套路]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/116048246</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/116048246</guid><author>cjhuster1</author><pubDate>Fri, 23 Apr 2021 16:42:27 +0800</pubDate><description><![CDATA[要有verification strategy
包括硬件的基本描述，典型功能，整体的验证目标，输入信号的来源和特性，一些其他的特殊考虑（如工具）；
testbench 的基本组成
timescale; Top module + internal signals; UUT; stimulus generation; response monitoring and comparing; $finish;
进阶要求
读入，写出数据；dump 波形；


...]]></description><category></category></item><item><title><![CDATA[第五章 行为级建模]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/115938969</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/115938969</guid><author>cjhuster1</author><pubDate>Fri, 23 Apr 2021 11:03:43 +0800</pubDate><description><![CDATA[第五章 行为级建模
5.1 行为建模
verilog 支持结构级建模和行为级建模。结构级建模就是把基本与/或门的功能单元进行连接，产生某一特定的功能器件。
随着芯片逻辑门的指数增长，不能直接完成门级实现。可以用一个能表示其功能的行为级模型来描述每一个单元。
行为级描述是工业上采用的一种非常重要的描述方式。它描述的是逻辑电路的输入-输出模型。
5.8 行为级建模方式的比较
1）连续赋值；
2）数据流/寄存器传输级逻辑（RTL）；
3）行为算法的建模方式；
用电路输入-输出算法关系描述的行为模型要比RTL 描述]]></description><category></category></item><item><title><![CDATA[第四章 Verilog 逻辑设计介绍]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/115921732</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/115921732</guid><author>cjhuster1</author><pubDate>Tue, 20 Apr 2021 23:31:07 +0800</pubDate><description><![CDATA[第四章 Verilog 逻辑设计介绍
4.1 组合逻辑的结构化模型
介绍了verilog 原语，即一些基本的逻辑门，例化时不必写例华名；
介绍了verilog module 的结构；
4.2 逻辑系统的验证和测试方法
四值逻辑：0/1/x/z,
x: 例如当一个wire 的变量被两个相反的信号驱动时，仿真器就无法判断是0/1，就出现不定态。
z: 高阻态，输入悬空就会出现这种状态。
testbench: 激励发生器；UUT；响应监测；

...]]></description><category></category></item><item><title><![CDATA[第三章 时序逻辑设计基础]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/115920959</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/115920959</guid><author>cjhuster1</author><pubDate>Tue, 20 Apr 2021 23:02:00 +0800</pubDate><description><![CDATA[第三章 时序逻辑设计基础
状态转移图 STG
Mealy 状态机的顶点用状态进行标记，有向边用输入信号和输出信号来标记；
Moore 状态机的顶点用状态和输出来标记，有向边用输入信号来标记。
BCD 码到余3码的转换
如何画出状态图：
1）状态就是对输入及当前状态响应产生的不同行为；所以先确定初始状态，然后根据输入来状态转换。
2）对于BCD 这个例子，每个状态下的响应就是是否进位，进位是一个状态，不进位就是一个新状态。

...]]></description><category></category></item><item><title><![CDATA[第二章 组合逻辑设计]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/115900976</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/115900976</guid><author>cjhuster1</author><pubDate>Tue, 20 Apr 2021 15:14:45 +0800</pubDate><description><![CDATA[第二章 组合逻辑设计
1. 卡诺图化简
1.1 必须是偶数项化简
因为卡诺图只有相邻格可以消除一个项；
1.2 积之和形式的化简
消除相邻的1项，得到f;
1.3 和之积形式的化简
消除相邻的0项，得到f’ 的积之和形式，然后再通过狄摩根定律转换成和之积的形式。
2. 毛刺与冒险
毛刺是指输出信号出现短暂的不期望的脉冲。冒险指的是会产生毛刺输出的电路。
静态1冒险：输出应为1，却出现0脉冲跳变；
静态0冒险：输出应为0，却出现1脉冲跳变；
2.1 两级静态冒险的消除（两级：逻辑表达式中只有积之和或和之积，逻]]></description><category></category></item><item><title><![CDATA[第一章设计方法概述]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/115899843</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/115899843</guid><author>cjhuster1</author><pubDate>Tue, 20 Apr 2021 11:52:52 +0800</pubDate><description><![CDATA[第一章设计方法概述
1. 设计规格
非常详尽的技术文档，包括功能、时序、硅片面积等。时序电路包括状态转移图、时序图和算法状态机（ASM）等的描述。
2. 设计划分
3. 设计输入
4. 仿真和功能验证
拟定测试方案，建立testbench(测试向量发生器，UUT，响应检测器), 测试执行和模型验证
5. 设计整合和验证
6.综合
7.后综合功能验证+ 时序验证
时序收敛指的是，当前所有的信号都满足由接口，时序单元及系统时钟所产生的时序约束条件时，即达到时序收敛。
通过STA 来分析最长路径是否违反时序约束。]]></description><category></category></item><item><title><![CDATA[Moore 序列检测器]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/105670023</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/105670023</guid><author>cjhuster1</author><pubDate>Tue, 21 Apr 2020 23:27:40 +0800</pubDate><description><![CDATA[分类

若只是单独检测连续的0或者连续1，相对更简单，不涉及到复位的问题，可使用标准状态机来实现；
若是检测连续的采样值，即出现连续的0和1时都检测，就涉及到复位初始状态的问题。什么意思呢？例如，我现在检测两个连续信号，当reset 有效时，我将第一个信号置为0，reset 无效后，在第一个时钟时，第一个信号接收新的值，若为0；而第二个信号接收第一个信号传过来的值，也是0，意味着此时第二个信号和第...]]></description><category></category></item><item><title><![CDATA[Grayhill 072 16进制键盘扫描器的Verilog实现]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/105607165</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/105607165</guid><author>cjhuster1</author><pubDate>Tue, 21 Apr 2020 22:27:49 +0800</pubDate><description><![CDATA[实现功能及具体结构
一个4*4的键盘输入信号，Grayhill 模块输出对应的码字。整体示意图结构如下：

当某一个按键按下时，会将相应的行列连通，相应的行输出一个高信号给Grayhill 模块。根据此示意图描述出更具体的电路模块图如下：

用一个信号发生器来模拟键盘的输入，一个行信号模块根据key 和 Col 的值来产生row[3:0]。因为键盘的输入是一个异步信号，因此需要引入一个同步模块，将...]]></description><category></category></item><item><title><![CDATA[异步信号的去抖电路及同步电路]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/105600545</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/105600545</guid><author>cjhuster1</author><pubDate>Sat, 18 Apr 2020 19:16:59 +0800</pubDate><description><![CDATA[异步输入的问题
如果电路有异步信号，就可能使电路进入亚稳态，即是输出不确定的状态。
去抖电路
异步信号如果是外部的机械输入，比如键盘等，输入信号就会产生机械性地振荡，因此首先需要对此类异步信号加一个去抖电路。可采用如下的基于NAND锁存器的开关去抖电路：

假设开关从上拨到下，当开关拨动时，开关臂立即与上方电路连接中断，上面的输入也就稳定，开关臂与下方电路接触后，电路就会完成状态转换。即使现在开关...]]></description><category></category></item><item><title><![CDATA[使用ASMD 来描述硬件电路并辅助verilog 代码的编写]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/105588085</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/105588085</guid><author>cjhuster1</author><pubDate>Sat, 18 Apr 2020 15:54:12 +0800</pubDate><description><![CDATA[@[TOC] 使用ASMD 来描述硬件电路并辅助verilog 代码的编写
ASMD 的定义
ASM (算法状态机)图是描述时序状态机的一种抽象。类似于软件流程图，描述状态机的动作。但是ASM 图只显示控制信号和行为动作(控制状态)，不显示存储元件所存储的内容。ASMD 图是在ASM图的基础上标注数据通道所发生的并发寄存器操作。简而言之，ASM 是用来描述控制器的，而ASMD可以描述控制器+数据通...]]></description><category></category></item><item><title><![CDATA[时序分析中的亚稳态、setup and hold time、skew and jitter]]></title><link>https://blog.youkuaiyun.com/cjhuster1/article/details/103758822</link><guid>https://blog.youkuaiyun.com/cjhuster1/article/details/103758822</guid><author>cjhuster1</author><pubDate>Sun, 29 Dec 2019 22:55:51 +0800</pubDate><description><![CDATA[1. 亚稳态
简单来说，就是一种不确定的状态，无法预测输出，尽管经过一段时间的不确定之后会有一个确定的输出状态（0或者1），但是是随机的，与输入没有什么关系。同步电路不满足setup 和 hold time 就会产生亚稳态。

2. setup 和 hold time

都是对register 来说的，setup time 是为了保证数据被正确采样所需要的最小时间；hold time 是为了保证...]]></description><category></category></item></channel></rss>