freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

語法詳細(xì)講解強(qiáng)制激勵(已修改)

2024-10-14 10:13 本頁面
 

【正文】 語法詳細(xì)講解 強(qiáng)制激勵 在一個過程塊中 , 可以用兩種不同的方式對信號變量或表達(dá)式進(jìn)行連續(xù)賦值 。 ? 過程連續(xù)賦值往往是不可以綜合的 , 通常用在測試模塊中 。 ? 兩種方式都有各自配套的命令來停止賦值過程 。 ? 兩種不同方式均不允許賦值語句間的時間控制 。 assign和 deassign 適用于對寄存器類型的信號 ( 例如: RTL級上 的節(jié)點或測試模塊中在多個地方被賦值的信號 ) 進(jìn)行賦值 。 initial begin 10 assign = `init_state。 20 deassign 。 end force 和 release 用于寄存器類型和網(wǎng)絡(luò)連接類型(例如:門級掃描寄存器的輸出)的強(qiáng)制賦值,強(qiáng)制改寫其它地方的賦值。 initial begin 10 force =0。 20 release 。 end 在以上兩個例子中,在 10到 20 這個時間段內(nèi),網(wǎng)絡(luò)或寄存器類型的信號被強(qiáng)制賦值,而別處對該變量的賦值均無效。 force的賦值優(yōu)先級高于 assign。 如果先使用 assign, 再使用 force對同一信號賦值,則信號的值為 force所賦 的值, 語法詳細(xì)講解 強(qiáng)制激勵 語法詳細(xì)講解 字符串 語法詳細(xì)講解 強(qiáng)制激勵 語法詳細(xì)講解 強(qiáng)制激勵 當(dāng)執(zhí)行 release后,則信號的值為 assign所賦 的值。 如果用 force對同一個信號賦了幾次值,再執(zhí)行 release, 則所有賦的值均不再存在。 可以對信號的某(確定)位、某些(確定)位或拼接的信號,使用 force和 release賦值;但不能對信號的可變位使用 force和 release 來賦值。 不能對寄存器類型的信號某位或某些位使用 assign 和deassign 來賦值。 語法詳細(xì)講解 強(qiáng)制激勵 語法詳細(xì)講解 建立時鐘 雖然有時在設(shè)計中會包含時鐘,但時鐘通常用在測試模塊中。下面 三個例子分別說明如何在門級和行為級建立不同波形的時鐘模型。 [例 1] 簡單的對稱方波時鐘 : 語法詳細(xì)講解 建立時鐘 reg clk。 always begin period/2 clk=0。 period/2 clk=1。 end reg go。 wire clk。 nand (period/2) ul (clk,clk,go)。 initial begin go=0。 (period/2) go=1。 end 注:在有些仿真器中,如果設(shè)計所用的時鐘是由與其相同抽象級別的時鐘模型產(chǎn)生的,則仿真器的性能就能得到提高。 [例 2]簡單的帶延遲的對稱方波時鐘: 語法詳細(xì)講解 建立時鐘 reg clk。 initial begin clk=0。 (period) forever (period/2) clk=!clk end reg go。 wire clk。 nand (period/2) ul (clk,clk,go)。 initial begin go=0。 (period) go=1。 end 注:這兩個時鐘模型有些不同,行為描述的模型延遲期間一直是低電平,而門級描述的模型開始延遲有半個周期是不確定的。 語法詳細(xì)講解 建立時鐘 [例 3]. 帶延遲、頭一個脈沖不規(guī)則的、占空比不為 1的時鐘: 語法詳細(xì)講解 建立時鐘 reg clk。 initial begin (period+1) clk=1。 (period/21) forever begin (period/4) clk=0。 (3*period/4) clk=1。 end end reg go。 wire clk。 nand (3*period/4,period/4) ul(clk,clk,go)。 initial begin (period/4+1) go=0。 (5*period/41) go=1。 end 注:這兩個時鐘模型也有些不同,行為描述的模型一開始就有確定的電平,而門級描述的模型有延遲開始時電平是不確定的。 語法詳細(xì)講解 怎樣使用任務(wù) mocule bus_ctrl_tb reg [7:0] data。 reg data_valid, data_rd。 cpu ul(data_valid,data,data_rd)。 initial begin cpu_driver(8?b0000_0000)。 cpu_driver(8?b1010_1010)。 cpu_driver(8?b0101_0101)。 end task cpu_driver。 語法詳細(xì)講解怎樣使用任務(wù) 語法詳細(xì)講解 怎樣使用任務(wù) input [7:0] data_in。 begin 30 data_valid=1。 wait(data_rd==1)。 20 data=data_in。 wait(data_rd==0)。 20 data=8?hzz。 30 data_valid=0。 end endtask 語法詳細(xì)講解怎樣使用任務(wù) 語法詳細(xì)講解 怎樣使用任務(wù) endmodule 在測試模塊中使用任務(wù)可以提高程序代碼的效率,可以進(jìn)行多次重復(fù)操作。 語法詳細(xì)講解怎樣使用任務(wù) wait wait wait wait data1 data2 data3 data4 cpu_data clk data_valid data_read read_cpu_state 語法詳細(xì)講解 存儲建模 目標(biāo) 學(xué)會使用 Verilog進(jìn)行存儲建模。 學(xué)會在 Verilog中進(jìn)行雙向口建模。 語法詳細(xì)講解存儲建模 存儲設(shè)備建模必須注意以下兩個方面的問題: 聲明存儲容量的大小。 提供對內(nèi)容的訪問權(quán)限,例如: 只讀 讀寫 同步讀寫 多次讀,同時進(jìn)行一次寫 多次同步讀寫,同時提供一些方法保證一致性 語法詳細(xì)講解 存儲設(shè)備建模 `timescale 1ns/10ps module myrom(read_data,addr,read_en_)。 input read_en_。 input [3:0] addr。 output [3:0] read_data。 reg [3:0] read_data。 reg [3:0] mem [0:15]。 initial $readmemb(“my_rom_data”,mem)。 always @ (addr or read_en_) if(!read_en_) read_data=mem[addr]。 endmodule 語法詳細(xì)講解 簡單 ROM建模 my_rom_data 0000 0101 1100 0011 1101 0010 0011 1111 1000 1001 1000 0001 1101 1010 0001 1101 ROM的數(shù)據(jù)存儲在另外的一個獨立的文件中 語法詳細(xì)講解 簡單 ROM建模 上面所示的 ROM模型中使用二維的存儲寄存器來定義存儲容量。ROM中的數(shù)據(jù)保存在一個獨立的文件中,如上面的右邊所示。這是一種保存 ROM數(shù)據(jù)的通用的方法,它可以使數(shù)據(jù)和 ROM模型分開。 語法詳細(xì)講解 簡單 RAM建模 `timescale 1ns/1ns module mymem(data,addr,read,write)。 inout [3:0] data。 inout [3:0] addr。 input read, write。 reg [3:0] memory [0:15]。 //4 bits, 16 words //read assign data=read? memory[addr]:4?bz。 //write always @ (posedge write) memory[addr]=data。 endmodule RAM模型比 ROM模型稍微復(fù)雜,因為它必須具有讀寫能力,而進(jìn)行讀寫時通常使用相同的數(shù)據(jù)總線,這就需要新技術(shù)來處理雙向總線。當(dāng)讀出口沒有被激活時, RAM模型不再激勵總線,如果此時的總線寫入變量也沒有被激活,則總線進(jìn)入高阻狀態(tài),這就避免了 RAM中的讀寫競爭。 上述模型是可綜合的,但是許多工具只產(chǎn)生一系列的寄存器,這一般就需要更大的空間,從而比實際的存儲器的價格更昂貴。 語法詳細(xì)講解 簡單 RAM建模 例: module scalable_ROM(mem_word,address)。 parameter addr_bits=8。 //size of address bus parameter wordsize=8。 //width of a word parameter words=(1addr_bits)。 //size of mem output [wordsize:1] mem_word。 //word of memory input [addr_bits:1] address。 //address bus reg [wordsize:1] mem [0:words1]。 //mem declaration //output one word of memory wire [wordsize:1] mem_word=mem[address]。 endmodule 語法詳細(xì)講解 容量可變的存儲器建模 語法詳細(xì)講解 容量可變的存儲器建模 上述的例子演示了怎樣通過設(shè)置字長和地址位數(shù)來定義一個只讀存儲設(shè)備。 在上例中,存儲字的范圍從 0開始的,而不是從 1開始,這是因為內(nèi)存是直接通過地址線定位的,同樣地,也可以用下面的方法來定義內(nèi)存和定位: reg [wordsize:1] mem [1:words]。 //memory starts at word 1 //address must be incremented to address all words in memory wire [wordsize:1] mem_word=mem[address+1]。 可以通過使用一個循環(huán)或系統(tǒng)任務(wù)來載入存有數(shù)據(jù)的整個存儲器。 ? 使用循環(huán)把值賦給存儲數(shù)組。 for(i=0。imemsize。i=i+i) // initialize memory mema[i]={wordsize{1?b1}}。 ? 調(diào)用 $readmem系統(tǒng)任務(wù)。 //load memory data form a file $readmemb(“”,mem)。 語法詳細(xì)講解 載入存儲設(shè)備 語法詳細(xì)講解 怎樣使用雙向口 使用 inout關(guān)鍵字聲明雙向口 。 inout [7:0] databus。
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1