Verilog刷题
文章平均质量分 89
ALLLRIGHT!
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDLBits(6)--Exams/ece241 2014 q5a/q5b
因此,在状态S0,S1,S2的跳转之间,如果input x一直为0,则保持S0状态不动,若input x为1,则切换状态为S1,无需任何条件,继续进入S2.状态S1:x的输入为1:1000…的补码也为其自身(例如1000_0000表示十进制的-128,其补码依然为其自身),继续完成z=x的输出;状态S2:x继续输入,此时则对后续进来的位数完成按位取反的操作,即z=~x;状态S0:x输入一直为0:0的补码为其自身,则完成z=x的输出;原创 2024-10-09 22:17:21 · 495 阅读 · 0 评论 -
HDLBits(5)--Exams/2014 q3fsm
1.在B状态下,对counter和w_counter进行复位时,并不是和reset和state==A状态下一样赋为2’b00。对于w_counter,接下来的w值也是算在未来三个周期的w计数中的,因此需要w_counter<=w。2.根据仿真结果显示,该程序的reset的优先级低于z的输出有效。即为:如果在reset高电平时,若满足w_counter=2’b10 && counter=2’b11的条件,依然是输出1’b1,而非强制设置为0(这和平常的代码习惯不一样)。原创 2024-10-09 22:03:14 · 900 阅读 · 0 评论 -
HDLBits(4)--Serial Receiver / with datapath / with parity check
1.由于需要进行奇偶校验(也就是添加第九位数据位),因此状态机的状态需要添加PARITY,在PARITY状态下,完成原来BIT8位完成的工作,即如果检测到结束有效位(in==1),则进入STOP状态,否则进入ERROR状态(至于odd是否判断正确,在output logic中再进行判断);3.对于odd判断逻辑(题目中提供),需要重新设定reset信号,因为该逻辑块中,reset信号不止是全局reset有效时有效,除此之外,每完成一个数据输出后,odd需置为0重新进行判断;原创 2024-09-09 01:29:31 · 1182 阅读 · 0 评论 -
HDLBits(3)--FSM ps2 & ps2data
和上题一样的状态机设置时,BYTE3进行done信号和out_bytes数据的输出,此时依然有可能正在接收着作为下一个周期的第一位数据,在这种情况下是没有IDLE状态来接收第一个数据的,而是直接进入BYTE1。因此,需要一个flip-flop暂存BYTE3时的数据,如果之后紧接着一个数据周期的话,则将这个寄存器中的数据存入原本的out_temp[23:16]可以看出,如果前后两个数据没有相连,是可以存在IDLE状态的,此时则可以正常接收第一个数据,也就是out_temp[23:16]。原创 2024-09-09 01:00:17 · 975 阅读 · 0 评论 -
HDLBits(2)--shift register & Conway‘s game
第二步:使用加法对每个单元格进行计数,对于d_loop来讲,只对[1:16][1:16]的范围进行计数,即对应着原二维数组[0:15][0:15]的全计数。还有需要注意的一点是,只有Q3的w输入来自于KEY[3],其余的来自于Q[i+1]第四步:将二维数组转为一维数组进行输出。都不是:输出上一个时钟的输出结果Q。第三步:使用case语句进行判断。16的二维数组扩展为18。原创 2024-07-05 15:59:31 · 901 阅读 · 0 评论 -
HDLBits(1)--counter计数器
/比较难理解c_load信号是干嘛的,准确来说,c_load指令负责当计数器复位或是计满后(12),将计数器再赋值为1(c_d)。//这道题只是特别麻烦而已,注意ss,mm,hh都要实现BCD计数。//modulo-10(BCD)计数器的特点就是使用BCD码且只计十位,因此可以实现:10个1为10,10个10为100,10个100为1000的累加计数方式。//这道题主要需要搞清楚进位关系,例如ena[2]==1不仅需要q[7:4]已经计数到9,还需要在这个时钟下q[7:4]仍需加一(ena[1]==1)原创 2024-06-30 23:52:50 · 1173 阅读 · 0 评论
分享