日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

verilog中assign语句

發布時間:2023/12/15 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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语句的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。