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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用函数实现数据大小端转换

發(fā)布時間:2023/12/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用函数实现数据大小端转换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

使用函數(shù)實現(xiàn)數(shù)據(jù)大小端轉(zhuǎn)換

題目描述
在數(shù)字芯片設(shè)計中,經(jīng)常把實現(xiàn)特定功能的模塊編寫成函數(shù),在需要的時候再在主模塊中調(diào)用,以提高代碼的復(fù)用性和提高設(shè)計的層次,分別后續(xù)的修改。
請用函數(shù)實現(xiàn)一個4bit數(shù)據(jù)大小端轉(zhuǎn)換的功能。實現(xiàn)對兩個不同的輸入分別轉(zhuǎn)換并輸出。
接口的信號圖如下:

`timescale 1ns/1ns module function_mod(input clk,input rst_n,input [3:0]a,input [3:0]b,output [3:0]c,output [3:0]d );reg [3:0] c_reg;reg [3:0] d_reg;always@(*)beginif(!rst_n)beginc_reg = 4'b0;d_reg = 4'b0;endelsebeginc_reg = conversion(a);d_reg = conversion(b);endendassign c = c_reg;assign d = d_reg;function [3:0] conversion;input [3:0] data_in;integer i;beginfor(i = 0; i <= 3; i = i + 1)conversion[i] = data_in[ 3 - i];endendfunction endmodule

知識點
在 Verilog 中,可以利用任務(wù)(關(guān)鍵字為 task)或函數(shù)(關(guān)鍵字為 function),將重復(fù)性的行為級設(shè)計進行提取,并在多個地方調(diào)用,來避免重復(fù)代碼的多次編寫,使代碼更加的簡潔、易懂。

函數(shù)只能在模塊中定義,位置任意,并在模塊的任何地方引用,作用范圍也局限于此模塊。函數(shù)主要有以下幾個特點:

  • 不含任何延遲、時序或時序控制邏輯。–只能是組合邏輯
  • 至少有一個輸入變量。
  • 只有一個返回值(返回值的變量就是函數(shù)名),且沒有輸出。
  • 不含有非阻塞賦值語句。
  • 函數(shù)可以調(diào)用其他函數(shù),但是不能調(diào)用任務(wù)。

Verilog 函數(shù)聲明格式如下:

function [range-1:0] function_id ;input_declaration ;other_declaration ;procedural_statement ; endfunction

其中:函數(shù)在聲明時,會隱式的聲明一個寬度為 range、 名字為 function_id 的寄存器變量,函數(shù)的返回值通過這個變量進行傳遞。當(dāng)該寄存器變量沒有指定位寬時,默認位寬為 1。
函數(shù)通過指明函數(shù)名與輸入變量進行調(diào)用。函數(shù)結(jié)束時,返回值被傳遞到調(diào)用處。

函數(shù)調(diào)用格式如下:

function_id(input1, input2, …);

總結(jié)

以上是生活随笔為你收集整理的使用函数实现数据大小端转换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。