题解 | #信号发生器#

信号发生器

https://www.nowcoder.com/practice/39f6766689cc448e928a0921d1d1f858

`timescale 1ns/1ns
module signal_generator(
	input clk,
	input rst_n,
	input [1:0] wave_choise,
	output reg [4:0]wave
	);
	reg [4:0] cnt;
	reg flag;
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)begin
			flag<=0;
			cnt<=0;
		end
		else if ( wave_choise == 0)begin
			if(cnt>=19)
				cnt<=0;
			else
				cnt<=cnt+1;
		end
		else if (wave_choise==2)begin
			if(wave<=1)
				flag<=1;
			else if(wave==19)
				flag<=0;

		end
	end
	always@(posedge clk or negedge rst_n)begin
		if(!rst_n)
			wave<=5'b0;
		else if( wave_choise == 0 )begin
			if(cnt<9)
				wave<=0;
			else if(cnt<19)//取到19的时候立即置零
				wave<=20;
			else
				wave<=0;
		end
		else if(wave_choise==1)begin
			if(wave<20)
				wave<=wave+1;
			else if(wave ==20)
				wave<=0;
		end
		else if(wave_choise==2)begin
			if(flag)
				wave<=wave+1;
			else
				wave<=wave-1;
		end

		
	end



  
endmodule

这个题忽略掉题目里少给的信息,比较困难的地方是想清楚时序

方波发生器,0-9位是低电平,10-19位是高电平,这里需要前计数器第8位输出低电平,第九位开始输出高电平(因为是非阻塞赋值所以看上去慢了一拍),实际上是第九位输出完成了低电平,才有了计数器增加到第九位。同理,计数器到19位时,计数器重新置零,但因为取到第19位时,已经完成了高电平输出。

锯齿波,通过wave数值自动计数,达到20时立即置零(区别,方波的19还需要等待cnt的判断,所以慢了一拍,但是锯齿波wave的20,也就是对应时钟第21个上升沿不需要在对cnt检测赋值,直接置零),实际上的周期是21

三角波,上升和下降的循环,因为有了标志位(flag)的赋值,所以也要想方波一样提前一拍进行处理。标志位flag为0,三角波为下降状态时,wave为1时更改flag,在wave==1时仍然也是先执行wave-1的操作(时钟上升沿触发期间flag保持0不变,确认flag为0进行wave-1操作,同时判断wave==1,进行flag置1操作)

全部评论

相关推荐

02-02 20:25
门头沟学院 Java
数学转码崽:八股文也算是前人总结的精华,但是因为全是结果导向,你光背不去理解它背后的深层原理和这样做的原因,反而忽略了程序员最该重视的过程导向。推荐你不会的就去多问ai,比如我当时背的时候,concurrenthashmap底层原理常见八股网站都会讲,但是我不理解为什么它去用synchronize锁节点,为什么不用reentrantlock去锁节点。面试官问我你为什么觉得synchronize在这个场景下性能更好呢?虽然面试官可能也不确定清楚,但是你可以尝试给他解答,让他看见你的思考,这才是最重要的,毕竟你没实习,你的项目你也无法证明是你自己思考的产物,那就在别的地方体现你的能力
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2024-12-30 18:02
程序员牛肉:1.可以标记一下自己的学校是985,有一些hr可能没想到你这个院校是985的。 2.简历所呈现出来的能力还是有点差的,苍穹外卖+黑马点评。这在java技术域里面也就是刚学三四个月的样子,大厂现在招人少,小厂又更加希望你能直接过来干活。就你简历上呈现出来的能力,确实是有点难找,肉眼可见的不懂技术。 第一个项目中:简单的使用redis也算是亮点嘛?使用jwt,threadlocal也算是亮点?你不就是调了几个包嘛?Nginx作为服务器也能写出来,这不是前端的活嘛? 第二个项目中:分布式锁+mq消息队列+Lua队列。真没啥好问的。属于面试官看一眼就阳痿的简历,没有任何想提问的欲望。 我给你建议是好好的挖一挖这个项目吧,其实苍穹外卖和黑马点评这两个项目很不错了,只不过是太烂大街了导致面试官没啥问的兴趣,所以不太推荐写简历上。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务