码迷,mamicode.com
首页 > 其他好文 > 详细

Verilog-检测输入序列能否被3整除

时间:2020-05-03 12:33:40      阅读:77      评论:0      收藏:0      [点我收藏+]

标签:sed   ||   data   nta   题目   tab   amp   image   ade   

题目

输入一个序列,最新输入的数字为最低位,如果当前序列能被3整除,输出1,否则输出0。
例如:输入1010_1111,对应1,2,5,10,21,43,87,175,因此输出为:0000_1010.

编程思路

Last_remainder In Remainder Out
0 0 0 1
1 0 2 0
2 0 1 0
0 1 1 0
1 1 0 1
2 2 2 0

代码

`timescale 1ns / 1ps

module sequence_divide_by_3(
	input clk,
	input rstn,
	input data,
	
	output divide_by_3
    );
	 
parameter Remainder_0 = 2‘d0,
			 Remainder_1 = 2‘d1,
			 Remainder_2 = 2‘d2;
			 
reg [1:0] state,next_state;

always @(posedge clk or negedge rstn) begin
	if(!rstn) state <= Remainder_0;
	else state <= next_state;
end

always @(*) begin
	case(state)
		Remainder_0: next_state = data ? Remainder_1 : Remainder_0;
		Remainder_1: next_state = data ? Remainder_0 : Remainder_2;
		Remainder_2: next_state = data ? Remainder_2 : Remainder_1;
		default : next_state = Remainder_0;
	endcase
end

assign divide_by_3 = (((state == Remainder_0) && (~data)) || ((state == Remainder_1) && (data)))?1‘b1:1‘b0;

endmodule

仿真波形

技术图片

Verilog-检测输入序列能否被3整除

标签:sed   ||   data   nta   题目   tab   amp   image   ade   

原文地址:https://www.cnblogs.com/wt-seu/p/12821119.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!