0
点赞
收藏
分享

微信扫一扫

经典游戏案例:仿植物大战僵尸

代码小姐 2024-06-26 阅读 41

几个常见的FPGA问题之序列发生器、编码器、D触发器

  • 关键词: 调用,Verilog HDL,序列发生器、编码器、D触发器

一、引言

FPGA(现场可编程门阵列)是一种灵活的硬件平台,它允许设计者根据需要实现数字逻辑电路。本文讲述几个FPGA常见的问题——序列发生器、编码器、D触发器,以及将对应的FPGA工程附在最后。在FPGA设计中,序列发生器、编码器和D触发器是三种常见的基本构件,它们各自有不同的用途和可能遇到的问题。

二、背景

1、序列发生器(Sequence Generator)

(1) 用途

(2) 常见问题

2、编码器(Encoder)

(1)用途

(2)常见问题

3、D触发器(D Flip-Flop)

(1)用途

(2)常见问题

二、问题及解决方案

1. 序列发生器(Sequence Generator)
(1)问题

构建工程,实现110100序列发生器,编写仿真代码进行测试。
编写要求:
构建工程流程;
设计过程(分析并画出状态图);
代码有注释;
仿真代码;
仿真结果。

(2)解答

解答:
a) 工作流程
在vivado中选择 add source,增加主工程sequence_generator.v文件,并编写代码, 实现110100序列发生器,最后在vivado中选择 add source 中增加 tb文件,仿真测试110100序列发生器是否正常。
b) 设计过程
使用6个状态,分别检测当前序列是否在 1,10,101,1011,10110和101100,并在最后一个状态输出序列检测成功标志。

在这里插入图片描述
c)代码
sequence_generator模块实现的功能是一个条件触发的序列检测器。具体来说,它检测输入信号data_in的特定序列,并在检测到该序列时产生一个输出脉冲data_out。

module sequence_generator(
	input  clk     ,
	input  rst_n   ,
	input  data_in ,
	output data_out 

);
	parameter   S0 = 3'D0 ; // IDLE
	parameter   S1 = 3'D1 ; // 1
	parameter   S2 = 3'D2 ; // 101
	parameter   S3 = 3'D3 ; // 1011
	parameter   S4 = 3'D4 ; // 10110
	parameter   S5 = 3'D5 ; // 101100

	
	reg[2:0] c_state ;
	reg[2:0] n_state ;

	always@( posedge clk or negedge rst_n)
	begin
		if( !rst_n )
      	c_state <= 0 ; 
	    else
		   c_state <= n_state ; 
	end
	
	always@( * )
	begin
		if( !rst_n )
		   n_state = 0 ;
		
举报

相关推荐

0 条评论