
常见代码题
GGbao_
误入歧途,及时止损!
展开
-
半加器、全加器
A和B是两个需要相加的数,Cin是来自上一级的进位,S是和,Cout是输入到下一级的进位。,A和B是两个需要相加的数,S是和,C是进位。原创 2023-05-25 21:32:55 · 272 阅读 · 0 评论 -
无毛刺时钟切换电路
第二级DFF的not Q的逻辑以负反馈的形式接回了输入,取了与逻辑,构建起50M时钟和100M时钟的关系,代表着切换前时钟等待一阵子后,才会转换到切换后时钟,避免了切换毛刺的出现。control信号无论是从上面通过还是从下面通过,都经过两级采样,避免了亚稳态的出现。,导致了毛刺的出现,假如control,clk_50M,还是clk_100M都是。最终上面的电路和下面的电路,以或的逻辑相取,输出clk_output.后一级的DFF用下降沿采样,避免了采样毛刺的出现。,根据控制信号control,原创 2023-05-25 21:27:50 · 1046 阅读 · 0 评论 -
串并-并串转换
输入一位的数据,每一个clk接收一位,最终以多位(8)位的形式输出。通常采用位拼接的形式来实现。典型的案例,给一位输入,实现8位数据的左移和右移操作。右移:舍弃低位,高位补输入的值左移:舍弃高位,低位补输入的值。计数器实现。原创 2023-05-25 17:38:26 · 317 阅读 · 0 评论 -
奇偶校验位
(3)奇偶校验只可以简单判断数据的正确性,从原理上可看出当一位出错,可以准确判断,如同时两个1变成两个0就校验不出来了,只是两位或更多位及校验码在传输过程中出错的概率比较低,奇偶校验可以用的要求比较低的应用下。以这样的一个双输入异或门为例子,我们可以发现,两个输入,有一个为1的时候,输出为1,有0个1或者2个1的时候输出为零,这里其实异或门的概念与奇偶校验的概念就重叠起来了,0和2是偶数,输出是0,1是奇数输出是1,根据此,我们只需要。为了搞懂奇偶校验的原理,我们首先需要知道的是异或门,他的真值表如下。原创 2023-05-25 20:06:55 · 3959 阅读 · 0 评论 -
格雷码转二进制
因为这个问题,我们提出了一种新的码值,他的特点就是相邻两位只有单bit发生改变,这里提前引用格雷码中的3和4的表示0010和0110,这个时候采样从3到4,只有可能采样到0010和0110,即前一个结果和后一个结果,不会出现这两者之外的错位结果,格雷码的优势由此体现,也正是因为格雷码的优势,它广泛的应用在包括FIFO,跨时钟域的通信,纠错等内容中。原创 2023-05-25 20:28:59 · 812 阅读 · 0 评论 -
异步复位同步释放
当rstn释放的时候,寄存器的输入端D可能因为某个组合逻辑电路和rstn有关系,导致D随rstn同步拉高。当异步复位信号到来时,寄存器 reg_1 会被直接拉低,这是不会产生问题的,当rstn下降沿和clk上升沿同时到来时,如果rstn比clk先到来一瞬间,且原来的reg_1信号为1,reg_1会被拉低为0,后一瞬间,clk来了,因为前一瞬间的reg_1值被拉低了,所以在clk到来时,一定有set_up不满足要求...但是,一进always 语句块后,由于rstn是0,所以reg_1会被赋值为0,还是0。原创 2023-05-24 17:36:35 · 602 阅读 · 0 评论 -
奇偶分频电路
加如对占空比没有要求,可以使用状态机来实现六分频电路,定义六个状态:状态0时clk的输出为0,状态1,2,3,4,5时clk的输出为1,也可以同样的实现六分频电路,以此类推,可以实现任意偶数分频的电路,并通过状态的输出为1,控制特殊占空比。在边沿采样的时候如果发现计数器的值是1或者2,那么则翻转信号clk2,体现在posedge_clk2和negedge_clk2上,这两个信号取”相或“操作,得到logic_or就是50%占空比的分频电路。只需要修改N的值和count的位宽,即可实现任意奇数分频。原创 2023-05-24 16:30:57 · 1019 阅读 · 0 评论 -
异步FIFO
根据给出的双口RAM代码和接口描述,实现异步FIFO,要求FIFO位宽和深度参数化可配置。电路的接口如下图所示。原创 2023-05-24 15:26:24 · 145 阅读 · 0 评论 -
同步FIFO
根据提供的双口RAM代码和接口描述,实现同步FIFO,要求FIFO位宽和深度参数化可配置。电路的接口如下图所示。原创 2023-05-24 15:12:19 · 137 阅读 · 0 评论 -
边沿检测电路
所谓的边沿检测(幼教边沿提取),就是检测输入信号的上升沿和下降沿。在设计数字系统时,边沿检测是一种很重要的思想,实际编程时用的最多的时序电路应该就是边沿检测电路和分频电路了。 在always的铭感信号列表中可以直接使用posedge和negedge来提取上升沿和下降沿,但是要是在always程序块的内部检测上升沿或者下降沿,使用posedge和negedge显然是不可以的,因为这样的语句不可综合。 要实现边沿检测,最直接的想法是用两级寄存器,第二级寄存器锁存住某个时钟上升沿到来时原创 2023-05-24 11:34:29 · 1071 阅读 · 0 评论