- 博客(59)
- 收藏
- 关注
原创 Exams/ece241 2014 q5a
2.在负数时候,补码是由负数的原码取反之后+1获得(可以理解为:从低位到高位(不包括最高位),当遇到第一个1之后,其余的高位全部取反,最后再加上最高位1)分析: 三个状态:初始状态、接收到第一个1,开始接收取反。举例:原码:1001100。1.正数下,补码就是原码。
2024-11-12 14:43:43
324
原创 Fsm serialdata
现在您有了一个有限状态机,可以识别串行比特流中何时正确接收字节,添加一个数据路径,输出正确接收的数据字节。当done为1时,out_byte必须有效,否则为not。1、像Fsm ps2data 例题输出接收到的三个字节一样,输出赋值必须在时序逻辑中实现,而且必须在next_state 状态下。2、输入bit存储在高位中,所以赋值应写为 a<= {in,a[7:1]},即右移一位。请注意,串行协议首先发送最低有效位。
2024-11-06 17:55:58
383
原创 Lemmings2
除了左右行走以及在颠簸时改变方向外,当ground=0时,旅鼠会摔倒并说“啊啊!当地面重新出现(地面=1)时,旅鼠将恢复向与坠落前相同的方向行走。在跌倒时被撞击不会影响行走方向,在与地面相同的周期中被撞击消失(但尚未下落),或者当地面在仍然下落时重新出现时,也不会影响行走方向。除了左右走动之外,如果脚下的土地消失,莱明斯还会摔倒(大概还会掉下来“啊!分为三个状态 左走 、右走 、跌落。所以类似于蓄水池将跌落设置为2个状态。构建一个有限状态机来模拟这种行为。
2024-11-04 13:35:39
175
原创 Fsm1s
从图中可以看出,输出晚了1拍,假设in从1—>0时状态从A->B,根据第二段组合逻辑判断状态转移 next_state立刻变成了 B。根据第一段 同步时序描述状态转移,则在下一个上升沿到来时 present_state 变为 B。如果case中写pre的话就会晚一个时钟周期。2、三段式书写过程中,第三段 本题既可以按组合逻辑赋值也可以按时序逻辑赋值,但在使用时序逻辑赋值的时候,注意case 中的条件为次态(next_state)。1、三段式 和两段式书写中 状态机第二段 需要写 always@(*)
2024-10-29 15:25:47
235
原创 Fsm1
在两个 always 模块描述方法的基础上,使用三个always 模块,一个always 模块采用。不同于一段式状态机的是,它需要定义两个状态,现态和次态,然后通过现态和次态的转换来实现时序逻辑。用两个 always 模块来描述状态机,其中一个 always模块采用同步时序。为了处理有时间上先后的事件,在FPGA中采用状态机的形式完成事件处理。,描述状态转移规律,另一个。,一个 always 采用。
2024-10-29 10:58:34
281
原创 Rule110
根据公式 : A + A' = 1;A · 1 = A 得 CR'(L + L') = CR';红圈 :LCR' | L'CR' | LC'R | L'C'R。黄圈: CRL' | CR'L' 同理可得 结果为 L'C。所以 红圈可得 CR' | C'R 即为 C^R。所以卡诺图最终结果为 C^R | L'C。因为 X^0 = X。
2024-10-28 11:37:53
341
原创 基于STM32F103ZET6的TM1638点亮
首先配置引脚 PD8,PD9,PD10分别对应 DIO,CLK,STB。CLK与STB引脚配置为推挽输出,DIO设为开漏输出。
2024-10-24 18:13:05
427
原创 Lfsr32
注意到图中有两个触发器的输入为前级输出与q[0]的异或,这些位置被称为 tap position.通过观察上图,所谓抽头点指的就是第5个,第3个寄存器的输入经过了异或逻辑。位30 至 21 为9.所以 可写为 q[31 : 23 ], q[21] 替换为q[22]^q[0],,q[20]~q[2] 有19个bit,所以。或者写:q[31:31-9+1],[5:3]是[3],[4],[5]三个bit。此题为 q
2024-10-15 13:22:29
434
原创 Shift18
算术右移将移位寄存器(在本例中为q[63] )中数字的符号位移位,而不是像逻辑右移那样移入零。考虑算术右移的另一种方法是,它假设被移位的数字是带符号的并保留符号,因此算术右移将带符号的数字除以 2 的幂。构建一个具有同步加载功能的 64 位算术移位寄存器。移位器可以左右移动,移动 1 位或 8 位,由amount选择。需要考虑符号位,右移一位,若符号位为1,就在左边补1,;逻辑右移就是不考虑符号位,右移一位,左边补零即可。例如,8位二进制数11001101分别右移一位。逻辑右移就是[0]1100110。
2024-10-15 10:17:46
583
原创 Count clock
构成hours(01~12), minutes(00~59) , second(00~59)。Reset信号比enable信号有更高的优先级,即使没有enable信号也可以进行复位操作。(Binary-Coded Decimal),用4位二进制数来表示1位十进制中的0~9这10个数码,是一种二进制的数字编码形式,用二进制编码的十进制代码。该计数器通过一个CLK进行计时,用ena使能信号来驱动时钟的递增。reset信号将时钟复位为12:00 AM。信号pm为0代表AM,为1代表PM。
2024-10-14 16:55:32
414
原创 复位电路的亚稳态
直到下一个时钟有效沿到来之后,前一级亚稳态大概率输出稳定(可能为低电平也可能为高电平),使得第二级触发器能够稳定输出,若此时第二级触发器输出高电平,即实现同步释放,若输出为低电平且此时复位信号仍然保持无效状态,则在第三个时钟输出高电平,实现同步释放。是在第二个触发沿到来时,前一级亚稳态输出已经稳定且稳定为高电平情况下的时序,如果在第二个触发沿到来时,前一级输出的亚稳态还未达到稳定,则电路还是处于亚稳态状态(概率不大),所以两级触发器电路并不能完全消除亚稳态问题,但是可以极大改善亚稳态。
2024-10-12 10:43:33
816
原创 FPGA中的亚稳态
综上所述,异步复位同步释放机制解决了异步复位和同步复位固有的缺陷,因此将这种方法作为系统复位是极好的选择。这种模型大部分资料都说的是第一级寄存器产生亚稳态后,第二级寄存器稳定输出概率为90%,第三极寄存器稳定输出的概率为99%,如果亚稳态跟随电路一直传递下去,那就会另自我修护能力较弱的系统直接崩溃。对于复位情况下的亚稳态,常常是由于恢复时间和移除时钟不满足造成的,因此,最常用的处理方式是采用异步复位、同步释放。保持时间就是时钟触发沿到来之后,数据需要保持稳定的最小时间,方便数据被电路准确传输。
2024-10-11 14:20:37
2292
原创 Countbcd
因为always 有延一拍的效果,所以在q[3:0]==9的时候,十位计数器使能位置1。那么q[7:4]为什么是在==9的时候呢?在q[11:8] ==0,此时百位使能位置1。为什么q [3:0] 要等于8呢?
2024-10-10 11:29:47
234
原创 阻塞赋值与非阻塞赋值
前言: 非阻塞赋值也会有延一拍的现象。阻塞赋值 此时只有out 一个寄存器 仿真图:分析: 首先中间变量in_reg赋值为in前一时刻的值,所以会比输入信号in延迟一拍,而中间变量in_reg和输出信号out却没有延迟一拍的关系了,而是在同一时刻同时变化的,因为我们使用的是阻塞赋值,也就是说只要赋值号右边的表达式的值有变化, 赋值号左边的表达式的值也将立刻变化,所以我们最终看到的结果是中间变量in_reg和输出信号out是同时变化的。根据上面RTL代码综合出的R
2024-09-30 11:18:52
547
原创 时序逻辑-延一拍/打一拍?
如图 15‑5所示最右边的三根红色的竖线表达的就是这种效果,sys_rst_n被拉低后led_out没有立刻变为0,而是当syc_clk的上升沿到来的时候led_out才复位成功,在复位释放的时候也是相同原因。key_in在复位后的第一个时钟的上升沿来到时拉高,我们可以发现此时led_out并没有在同一时刻也跟着拉高,而在之前的组合逻辑中输出是在输入变化的同一时刻立刻变化的。我们这种分析最后的现象完全契合了延一拍的效果(直观上看到的波形是对齐的,其实我们要取的值是时钟上升沿前一时刻得值)
2024-09-30 10:27:02
2473
1
原创 Exams/ece241 2013 q2
具有四个输入(A、b、c、d)的单输出数字系统在输入上出现2、7或15时生成逻辑-1,在出现0、1、4、5、6、9、10、13或14时生成逻辑-0。在卡诺图中,要得到POS形式,可以想象将SOP形式中的1和0互换,然后再次应用SOP的圈定方法,得到的圈将代表OR门的求和项。- 在卡诺图中,SOP通常通过将1(真值)所在的单元格圈起来,然后找到这些圈能够覆盖的最小数量的单元格,每个圈代表一个AND门的乘积项。”,是一种将逻辑函数表示为AND(与)门的输出进行OR(或)连接的形式。假值)的单元格来实现。
2024-09-26 11:09:22
418
原创 Bcdadd4
实例化bcd_fadd的4个副本,以创建一个4位bcd波纹进位加法器。加法器应该将两个4位BCD数字(打包成16位向量)和一个进位相加,得到一个4位和并执行。您将获得一个名为BCD_fadd的BCD(二进制编码十进制)一位加法器,它将两个BCD数字相加并进位,然后产生一个和并进位。bcd_fadd模块(输出[3:0]和);
2024-09-24 11:54:43
213
原创 Exams/ece241 2014 q1c
1、当符号位相异时,两个数相加一定不会产生符号溢出,以4位2进制a,b为例(最高位为符号位)2、当符号位相同时,可通过a+b的结果的符号位与a或b的符号位进行比较,若相同未溢出,即。如上式所示,a+b的结果在4位二进制可表示的范围内,即不会产生数据溢出,即。
2024-09-23 16:01:41
242
原创 Gatesv
out_both:此输出向量的每个比特都应该指示相应的输入比特及其左侧的邻居(较高索引)是否都是“1”。例如,out_both[2]应该指示在[2]和[3]中是否都是1。由于in[3]在左边没有邻居,所以答案很明显,所以我们不需要知道out_both[3]。例如,out_any[2]应指示[2]或[1]中的任何一个是否为1。由于in[0]在右边没有邻居,所以答案很明显,所以我们不需要知道out_any[0]。例如,out_didifferent[2]应指示in[2]是否不同于in[3]。
2024-09-20 17:15:55
316
原创 Thermostat
恒温器可以处于两种模式之一:加热(模式=1)和冷却(模式=0)。在加热模式下,当温度过低(too_cold=1)时打开加热器,但不要使用空调。在制冷模式下,当空调太热(too_hot=1)时打开空调,但不要打开加热器。当加热器或空调打开时,也要打开风扇使空气循环。此外,即使加热器和空调关闭,用户也可以请求打开风扇(fan_on=1)。加热/冷却恒温器控制加热器(冬季)和空调(夏季)。实施一个电路,根据需要打开和关闭加热器、空调和鼓风机风扇。分析:输出可以作为其他输出的输入吗?
2024-09-20 15:47:35
901
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人