1. 程式人生 > >verilog 時鐘管理模組

verilog 時鐘管理模組

//==================================================================================================
//  Filename      : system_delay.v
//  Created On    : 2018-06-05 10:13:37
//  Last Modified : 2018-06-05 17:47:41
//  Revision      : 
//
//  Description   : 
//
//
//==================================================================================================

`timescale 1ns/1ns
//Delay 30ms for system stable
module system_init_delay(input clk,
					input rst_n,
					output delay_done,
					output pll_rst
					//output delay_cnt
						);

parameter SYS_DELAY_TOP=24'd256;
//delay_cnt=24'd0;
reg [24:0]delay_cnt=24'd0;
[email protected]
(posedge clk or negedge rst_n) begin if(!rst_n) delay_cnt<=0; else if(delay_cnt<SYS_DELAY_TOP-1'b1) delay_cnt<=delay_cnt+1'b1; else delay_cnt<=SYS_DELAY_TOP-1'b1; end assign delay_done=(delay_cnt==SYS_DELAY_TOP-1'b1)?1'b1:1'b0; assign pll_rst=~delay_done; endmodule // system_delay

//==================================================================================================
//  Filename      : system_ctrl.v
//  Created On    : 2018-06-05 10:00:38
//  Last Modified : 2018-06-05 17:49:27
//  Revision      : 
//
//  Description   : 
//
//
//==================================================================================================
//rst_n sync

`timescale 1ns/1ns
module system_ctrl (
	input clkin,    // Clock
	//input clk_en, // Clock Enable
	input rst_n,  // Asynchronous reset active low
	output sys_rst_n,
	output clk_ref,
	output delay_done
	//output [24:0]delay_cnt
);

//pll
wire locked;
sys_pll u_sys_pll (
	areset(pll_rst),
	inclk0(clkin),
	c0(clk),
	locked(locked)
	);

//wire delay_done;
reg rst_nr1,rst_nr2;
always @(posedge clk)
begin
	if(!rst_n)
	begin
		rst_nr1<=1'b0;
		rst_nr2<=1'b0;

	end
	else
	begin
		rst_nr1<=1'b1;
		rst_nr2<=rst_nr1;
	end

end

//wire delay_done;

system_init_delay #(//.SYS_DEALY_TOP(24'd2_500_000),
	.SYS_DELAY_TOP(24'd100)//for test
)
u_system_init_delay(
					.clk(clk),
					.rst_n(1'b1),
					.delay_done(delay_done)
					//.delay_cnt(delay_cnt)


					);
assign clk_ref=clk;
assign sys_rst_n=rst_nr2&pll_rst;//active high

endmodule
//==================================================================================================
//  Filename      : system_ctrl_TB.v
//  Created On    : 2018-06-05 10:23:49
//  Last Modified : 2018-06-05 16:40:18
//  Revision      : 
//
//  Description   : 
//
//
//==================================================================================================

`timescale 1ns/1ns

module system_ctrl_TB();
reg clk;
reg rst_n;
localparam PERIOD=2;

initial
begin 
	clk=0;
	forever #(PERIOD/2)
	clk=~clk;

end

task task_reset ();
begin
	rst_n=0;
	repeat(2)@(negedge clk);
	rst_n=1;
end
endtask


//system_ctrl_TB
wire clk_ref;
wire sys_rst_n;
wire delay_done;
//wire [24:0]delay_cnt;
system_ctrl u_system_ctrl(
				.clk(clk),
				.rst_n(rst_n),
				//output
				.clk_ref(clk_ref),
				.sys_rst_n(sys_rst_n),
				.delay_done(delay_done)
			//	.delay_cnt(delay_cnt)


	); 

//system init task
task task_sysinit;
	begin








	end
endtask

//test bench
initial
begin
	task_sysinit;
	task_reset;
	rst_n=0;
	#89;
	rst_n=1;
	#191;
	rst_n=0;
	#83;
	rst_n=1;
	#319;
	rst_n=0;
	#13;
	rst_n=1;
end

endmodule

相關推薦

verilog 時鐘管理模組

//================================================================================================== // Filename : system_delay.v //

【Django Series - 03】使用者管理模組:建立使用者、登入、退出

Django Series(Django2.1.2 + Anaconda3) (一)安裝並配置 Django 環境 ||| 基於 Django 進行 Web 開發 (二)Django 基礎知識:語法、教程 (三)使用者管理模組:建立使用者、登入、退出 (四)資料的增刪改:使用者提交資

22、【收貨地址管理模組】——收貨地址增、刪、改、查、分頁列表、地址詳情的功能開發

####1、介面開發: 新建ShippingController類 在類上新增相關注解 @Controller @RequestMapping("/shipping/") public class ShippingController { } #####1、收貨地址的增

.NET快速資訊化系統開發框架 V3.2 -&gt; Web 使用者管理模組編輯介面-組織機構選擇支援級聯選擇

  下拉框級聯選擇功能非常的實用,框架使用者管理編輯介面對組織機構的選擇在3.2版本中新增了級聯選擇的支援,讓組織機構的選擇更加的方便與高效,也不容易出錯。   我們框架的組織機構結合實際分成了5種類型,分別為:公司、分公司、部門、子部門、工作組。不同的企業可以根據實際需要進行取捨。使用者編輯

python程序管理模組

參考:https://www.cnblogs.com/cindy-cindy/p/8031731.html python程序管理的模組:subprocess,multiprocessing subprocess:執行外部的程式,而不是執行python內部編寫的函式。程序之間通過管道進行交流。

learun.framework7.0━ .net 單位管理模組

單位(職位)管理模組主要是針對組織機構的單位(職位)進行管理,包括:增加、修改、刪除、移動、對單位設定使用者,設定單位的許可權等。單位組織在企業應用中是一個普遍應用的模組,也屬於其他業務應用的基礎。合理的組織與規劃組織機構下的單位,對後期的管理可以起到事半功倍的效果。 登入系統後,選擇“單位組織”可以進入單

雲吶的資產管理模組是怎樣的?

雲吶資產管理模組秉承簡單、好用、易上手的原則,為使用者提供更便捷的資產管理方法及資產全生命週期管理、資產跟蹤、資產維護、資產分析報表等管理功能。幫助企業全面掌握資產的分佈以及執行狀況,達成"更充分利用現有資產"、"更嚴格地控制資產"、"獲得更高的投資回報"的資產管理與運營目標。  

巨集開關管理模組的實現 C語言

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Exynos4412晶片的時鐘管理單元

本章介紹Exynos4412晶片的時鐘管理單元(CMU)。CMU控制鎖相環(PLL)併為Exynos4412晶片中的各個IP、匯流排和模組產生時鐘。它們還與電源管理單元(PMU)通訊,以便在進入某個低功耗模式之前停止時鐘,以通過時鐘切換來降低功耗。 1.Exynos4412晶片的時鐘體系介紹

linux下基於vc088x開發板分析CLK模型(時鐘管理

Linux clk 模型   Linux clk模型採用面向物件的思想來設計實現的。 在porting層建立一個一個的clk節點物件,然後將所有的clk節點物件連成一個list。 當驅動層需要設定時鐘的時候,通過porting層與驅動層

nodejs學習筆記-組織與管理模組

1.將模組定義成類:對於公有變數可以直接獲取或者修改。私有變數需要呼叫函式進行修改。 var _name; var name = ''; var foo = function(name){ _name = name; } foo.prototype.GetName = function(

.Net機試題——編寫一個BS架構的多層表結構的資訊管理模組

  要求:     編寫一個BS架構的多層表結構的資訊管理模組,使用者體驗需要注意。包含錯誤處理,需要最終能完整的跑起來。頁面可以不美化,但是整潔還是必須的。在不能完成詳細功能需求的情況下優先保證基本功能。 1.    

verilog記錄1——模組相關

模組呼叫 模組呼叫有兩種方法: 位置關聯: 引用時,嚴格按照模組定義的埠順序來連線,不用標明原模組定義時規定的埠名。 名稱關聯: 引用時用”.”符號,標明原模組定義時規定的埠名 例如: 原模組: module and (C,A,B); input A,B;

【CRM(二)】登入&客戶管理模組

CRM綜合練習:使用者模組登入功能 使用者模組:登入功能程式碼實現 修改登入頁面 <FORM id=form1 name=form1 action="${ pageContext.request.contextPath }/user_login.action" meth

JavaEE(10)——“學生資訊管理模組的”MVC實現

實驗10 “學生資訊管理模組的”MVC實現 一、實驗目的 重點掌握資料庫連線過程及增、刪、改、查操作; 重點掌握Servlet的應用; 掌握專案的結構及組成。 二、實驗演示效果 圖1 單擊連結“新增”,彈出圖2所示頁面。 圖2 在圖2所示頁面輸入一個學

2018.07.11 新增郵件號段管理及查詢後臺管理模組

新增郵件號段管理及查詢後臺管理模組 wawe [email protected] MySQL -- 後臺選單 select * from TB_GLOBAL_MENUS t ; 新增SID:10033 10034 -- 角色選單包 select *

遊戲後臺管理模組開發流水賬

最近沒什麼事就被老大抓壯丁去做了一個遊戲後臺管理系統,包括前端和後端。 前端採用Vue+Webpack+Vue-resource+element-ui後端採用Nodejs+express+mysql+redis 初生牛犢不怕虎,看了一點文件,俺上來就手擼Vue,

Simba框架之許可權管理模組--simba-permission

許可權管理,相信大家都不陌生,幾乎所有的系統都會涉及到,Spring Security, Apache Shiro,相信大家都接觸過或者聽說過,是大家用的最多的開源許可權管理元件,但是這兩個元件都相對而言,功能太過於強大,強大的功能自然就會產生複雜性。但是很多系統其實許可權管

從零開始之驅動發開、linux驅動(四十一、Linux中舊的時鐘管理體系)

老的時鐘管理和新的時鐘管理並無本質的差別。 這裡先列出新的新的common clock framework和老的區別,後面再分析老的實現。 1.老的時鐘框架沒有區分各種時鐘型別,新的框架把時鐘分成了五個不同的時鐘型別,固定頻率的,分頻的,開關型別的,多選一型別。 2.老的時鐘框架需要

Rbac許可權管理模組設計邏輯思路

RBAC(Role-Based Access Control,基於角色的訪問控制),就是使用者通過角色與許可權進行關聯。簡單地說,一個使用者擁有若干角色,每一個角色擁有若干許可權。這樣,就構造成“使用者-角色-許可權-資源”的授權模型。在這種模型中,使用者與角色