EDA常用模块 奇数分频 偶数分频 冒泡排序

2023-10-11 13:50

本文主要是介绍EDA常用模块 奇数分频 偶数分频 冒泡排序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、分频

1、偶数分频

.v文件

module FenPin (input clk,input rst,output wire clk_10k);
parameter f=8;				//即为偶分频的分频数
reg [11:0] count=0;						//存储分频计数
reg clk_10k_tmp=0;
assign clk_10k = clk_10k_tmp;// 复位信号rst低电平有效
always @(posedge clk or negedge rst) 
beginif (!rst) 							beginclk_10k_tmp = 0;count = 0;end else beginif (count == f/2-1) 			//偶分频数/2 - 1beginclk_10k_tmp = ~clk_10k_tmp;count = 0;end else begincount = count + 1;endend
end
endmodule

测试文件

`timescale 1 ps/ 1 ps
module FenPin_vlg_tst();reg clk;
reg rst;wire clk_10k;FenPin i1 ( .clk(clk),.clk_10k(clk_10k),.rst(rst)
);initial                                                
begin                                                  rst=1;				//模拟复位信号按下#20 rst=0;#20 rst=1;#8000 $stop;                                        
end                                                    
always                                                                
begin                                                  #50 clk=1; #50 clk=0;                                     
end                                                    
endmodule

仿真结果

image-20210523185310874

2、奇数分频

.v文件

module FenPin(clkout,clk,rst); 
input clk,rst; 
output clkout; parameter f=9;			//即为奇分频分频数reg [9:0] counter1, counter2;
reg clkp1, clkp2;always@(posedge clk or negedge rst)  // counter1自动计数
beginif (~rst) counter1<=0;else if (counter1==f-1)counter1<=0;else counter1<=counter1+1;
endalways @(posedge clk or negedge rst) // clk上升沿触发产生p1
beginif(~rst) clkp1<=0;else if(counter1==(f-1)/2 || counter1==f-1)clkp1<=~clkp1;
endalways @(negedge clk or negedge rst)//counter2自动计数 
begin if(~rst) counter2<=0; else if(counter2==f-1) counter2<=0; else counter2<=counter1+1; 
end always @(negedge clk or negedge rst)//clk下降触发产生p2 
begin if(~rst) clkp2<=0; else begin if(counter2==(f-1)/2||counter2==f-1) clkp2<=~clkp2;end 
end assign clkout=clkp1|clkp2;   //p1|p2使占空比等于50% endmodule

测试文件

`timescale 1 ps/ 1 ps
module FenPin_vlg_tst();reg clk;
reg rst;wire clkout;FenPin i1 ( .clk(clk),.clkout(clkout),.rst(rst)
);initial                                                
begin                                                  rst=1;				//模拟复位信号按下#20 rst=0;#20 rst=1;#8000 $stop;                                        
end                                                    
always                                                                
begin                                                  #50 clk=1; #50 clk=0;                                     
end                                                    
endmodule

仿真结果

image-20210524082335407

二、其他功能

1. 冒泡排序

代码

module pop(input clk,input rst,input [3:0]data_in,	output reg[2:0]state,output reg[3:0]data_out
);reg[3:0] i,p;//计数器
reg[3:0]content[7:0];initial 
beginstate<=0;i<=0;p<=7;
endalways@(posedge clk or posedge rst )
begin
if(rst)begin state<=0;data_out<=0;i<=0;p<=7;endelse begincase(state)3'b000:begin//读取数据content[i]=data_in;i=i+1;if(i==8)begin i<=0;state<=3'b001;endend //0003'b001:begin//冒泡排序if(i<p) begin if(content[i]<content[i+1])begin //如果当前位置比后面小则对调content[i+1]<=content[i];content[i]<= content[i+1];endi<=i+1;endelse begin i<=0; p<=p-1;  endif (p==0&&i==0)  state<=3'b010;end//0013'b010:begin //发送数据data_out=content[i];i=i+1;if(i==8) begin i=0; state=3'b011; endend3'b011:begin//延时一段时间i=i+1;if(i==15)begin i=0;state=0;endend//011		endcase
end//elseend//always
endmodule

测试文件

//测试文件:
`timescale 1 ns/ 1 ps
module pop_vlg_tst();reg clk;
reg [3:0] data_in;
reg rst;                                              
wire [3:0]  data_out;
wire [2:0]  state;// assign statements (if any)                          
pop i1 ( .clk(clk),.data_in(data_in),.data_out(data_out),.rst(rst),.state(state)
);initial                                                
begin                                                  clk=0;#100rst=1;#30rst=0;forever #5 clk=~clk;                      
end                                                    
initial                                                               
begin
#130                                                  while(1)begindata_in=7;#10data_in=5;#10data_in=8;#10data_in=11;#10data_in=12;#10data_in=14;#10data_in=15;#10data_in=9;#1000rst=1;#30rst=0;end		
end                                                    
endmodule

这篇关于EDA常用模块 奇数分频 偶数分频 冒泡排序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/188490

相关文章

MyBatis常用XML语法详解

《MyBatis常用XML语法详解》文章介绍了MyBatis常用XML语法,包括结果映射、查询语句、插入语句、更新语句、删除语句、动态SQL标签以及ehcache.xml文件的使用,感兴趣的朋友跟随小... 目录1、定义结果映射2、查询语句3、插入语句4、更新语句5、删除语句6、动态 SQL 标签7、ehc

Python打包成exe常用的四种方法小结

《Python打包成exe常用的四种方法小结》本文主要介绍了Python打包成exe常用的四种方法,包括PyInstaller、cx_Freeze、Py2exe、Nuitka,文中通过示例代码介绍的非... 目录一.PyInstaller11.安装:2. PyInstaller常用参数下面是pyinstal

Python sys模块的使用及说明

《Pythonsys模块的使用及说明》Pythonsys模块是核心工具,用于解释器交互与运行时控制,涵盖命令行参数处理、路径修改、强制退出、I/O重定向、系统信息获取等功能,适用于脚本开发与调试,需... 目录python sys 模块详解常用功能与代码示例获取命令行参数修改模块搜索路径强制退出程序标准输入

Python pickle模块的使用指南

《Pythonpickle模块的使用指南》Pythonpickle模块用于对象序列化与反序列化,支持dump/load方法及自定义类,需注意安全风险,建议在受控环境中使用,适用于模型持久化、缓存及跨... 目录python pickle 模块详解基本序列化与反序列化直接序列化为字节流自定义对象的序列化安全注

Python 常用数据类型详解之字符串、列表、字典操作方法

《Python常用数据类型详解之字符串、列表、字典操作方法》在Python中,字符串、列表和字典是最常用的数据类型,它们在数据处理、程序设计和算法实现中扮演着重要角色,接下来通过本文给大家介绍这三种... 目录一、字符串(String)(一)创建字符串(二)字符串操作1. 字符串连接2. 字符串重复3. 字

python pymodbus模块的具体使用

《pythonpymodbus模块的具体使用》pymodbus是一个Python实现的Modbus协议库,支持TCP和RTU通信模式,支持读写线圈、离散输入、保持寄存器等数据类型,具有一定的参考价值... 目录一、详解1、 基础概念2、核心功能3、安装与设置4、使用示例5、 高级特性6、注意事项二、代码示例

python语言中的常用容器(集合)示例详解

《python语言中的常用容器(集合)示例详解》Python集合是一种无序且不重复的数据容器,它可以存储任意类型的对象,包括数字、字符串、元组等,下面:本文主要介绍python语言中常用容器(集合... 目录1.核心内置容器1. 列表2. 元组3. 集合4. 冻结集合5. 字典2.collections模块

Python中logging模块用法示例总结

《Python中logging模块用法示例总结》在Python中logging模块是一个强大的日志记录工具,它允许用户将程序运行期间产生的日志信息输出到控制台或者写入到文件中,:本文主要介绍Pyt... 目录前言一. 基本使用1. 五种日志等级2.  设置报告等级3. 自定义格式4. C语言风格的格式化方法

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1