verilog中assign语句
生活随笔
收集整理的這篇文章主要介紹了
verilog中assign语句
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/**************************************
* Module: assign
* Date:2014-08-10
* Author: hemmingway@163.com
*
* Description: verilog中的assign語句的用法
***************************************//*
一、引入語法的概念1、只有寄存器類型的信號才可以在always和initial 語句中進行賦值,類型定義通過reg語句實現。2、always 語句是一直重復執行,由敏感表(always 語句括號內的變量)中的變量觸發。3、always 語句從0 時刻開始。4、在begin 和end 之間的語句是順序執行,屬于串行語句。
*/// assign 語句的用法
module test;// 1.作為信號量輸出,通過寄存器連續賦值
output [3:0] oLED; // 默認是wire類型,需要持續輸出才行//internal signal
reg [3:0] sr_LED; //用獨熱碼表示LED亮燈位置。assign oLED[3:0] = ~sr_LED[3:0]; //向LED燈接口輸出信號。//2.作為信號量輸出,通過寄存器拼接數據位實現。output [15: 0] oSI_DATA;//internal signalreg [ 3: 0] s_HEX;reg [ 7: 0] s_SEGBINARY; // s_SEGBINARY[2] should be the DOTreg [ 3: 0] s_SEG_SEL;assign oSI_DATA = {iLED_SEL,s_SEG_SEL,s_SEGBINARY};//3.作為信號量輸出,通過判斷條件,賦值給信號output[ 1: 0] oSEG_STATE;
output oCP_PLUSE;
wire s_CNTEQCYCLE; parameter PARAM_7SEG_CYCLE = 32'd2500000;reg [ 1: 0] sr_SEG_STATE;
reg [31: 0] sr_cnt;
reg sr_cp_pluse;
assign oSEG_STATE = sr_SEG_STATE;
assign oCP_PLUSE = sr_cp_pluse;
assign s_CNTEQCYCLE = ( sr_cnt == PARAM_7SEG_CYCLE ) ? 1 : 0;//4.作為輸出信號量,通過輸入信號量賦值給輸出,同樣可以輸入信號量和寄存器組合邏輯,賦值給輸出信號量。
input iCLK50M;
input iCP_PULSE;
input[15:0] iSI_DATA;
output oSI;
output oCP;
reg [ 3: 0] sr_cnt;
reg [15: 0] sr_si_data;
reg sr_cp;
reg sr_en;
assign oSI = sr_si_data[15];
assign oCP = sr_en & iCLK50M;endmodule//
//
//
// 下面是功能相同但寫法不同的兩段代碼:
// 第一段A
module assign_test_a (clk,lhold,lholda
);
input clk;
input lhold;
output lholda; // 將輸出定義為reg類型, 不用assign來持續輸出了
reg lholda;always @(posedge clk)
if (lhold)lholda<=lhold;
elselholda<=0;endmodule// 第二段B
module assign_test_b (clk,lhold,lholda
);
input clk;
input lhold;
output lholda; // 默認是wire類型的
reg lholda_r; // 定義一個內部的reg變量,always @(posedge clk)if (lhold)lholda_r<=lhold;elselholda_r<=0;assign lholda=lholda_r; // 進行持續賦值輸出endmodule// 分析
/*從實用角度來說,這里的意義比較大。當內部有多個信號需要輸出,可是輸出引腳只有一個,那么這時就可以進行選擇。如下:
assign lholda= (條件)? (lholda_ra): lholda_rb; 可以嵌套使用。或者在這種情況下也非常有用。Lholda 與 內部的reg輸出lholda_ra, lholda_rb,…., 存在邏輯函數關系
*/
總結
以上是生活随笔為你收集整理的verilog中assign语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5000块买iPhone还是安卓?看看大
- 下一篇: 特效炸裂!《王者荣耀》李信新皮肤公布 碾