色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Verilog中clk為什么要用posedge,而不用negedge

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 作者:FPGA設計論壇 ? 2022-08-31 15:51 ? 次閱讀

取某個信號的上升沿或下降沿信號

取一個信號的上升沿或下降沿信號,可以通過將信號delay后,然后將原信號和delay信號,通過不同的與非操作,獲取上升沿信號或下降沿信號: 階段一: reg delay; // delay信號 always @ ( posedge clk or negedge rstn ) if( !rstn ) delay <= 0; else delay <= orig;? ?// orig是原信號 wire pos_signal = orig && ( ~delay ); // 原信號上升沿位置處產生的pulse信號 wire neg_signal = ( ~orig ) && delay; // 原信號下降沿位置處產生的pulse信號 階段二: 上述操作會存在亞穩態問題,并且得到的上升沿信號pos_signal和下降沿信號neg_signal無法被原采樣時鐘clk采樣。正確做法是,先將原信號用采樣時鐘delay 2次(打兩拍),得到和采樣時鐘同時鐘域的信號delay2,然后再按上述方法獲取上升沿和下降沿信號,這時得到的上升沿或下降沿就可以被原采樣時鐘采樣。 例句如下: reg ori_signal;// 需取上升沿或下降沿的原信號 reg delay1; reg delay2; always @ ( posedge clk or negedge rstn ) if( !rstn ) delay1 <= 0; else delay1 <= ori_signal;? ? always @ ( posedge clk or negedge rstn ) if( !rstn ) delay2 <= 0; else delay2 <= delay1;? // delay2 已與clk同域 reg delay3; always @ ( posedge clk or negedge rstn ) if( !rstn ) delay3 <= 0; else delay3 <= delay2;? ? wire pos_signal = delay2 && ( ~delay3 ); // 原信號上升沿位置處產生的pulse信號 wire neg_signal = ( ~delay2 ) && delay3; // 原信號下降沿位置處產生的pulse信號 上升沿電路如下:465c7812-2901-11ed-ba43-dac502259ad0.jpg ? ? ? ?注意:前兩個觸發器的運用就是起同步作用,將某個信號同步到采樣時鐘域,以后要重點注意使用。 階段三: 用階段二的語句會比較繁瑣,可以用下述語句簡化: reg[2:0] delay; always @ ( posedge clk or negedge rstn ) if( !rstn ) delay <= 0; else delay <= { delay[1:0], ori_signal} ; // ori_signal是原信號 wire pos_signal = delay[1] && ( ~delay[2] ); // 原信號上升沿位置處產生的pulse信號 wire neg_signal = ( ~delay[1] ) && delay[2]; // 原信號下降沿位置處產生的pulse信號

Verilog中clk為什么要用posedge,而不用negedge

posedge是上升沿,電平從低到高跳變

negedge是下降沿,電平從高到低跳變

對于典型的counter邏輯

always @(posedge sys_clk or negedge sys_rst_n) begin

if(!sys_rst_n)

counter <= 24'd0;//十進制0

else if(counter < led_time) begin

flag_counter = 1'b0;

counter <= counter + 1'b1;

end

else begin

counter <= 24'd0;

flag_counter = 1'b1;

end

end

clk為什么要用posedge,而不用negedge呢?

一般情況下,系統中統一用posedge,避免用negedge,降低設計的復雜度,可以減少出錯。

在ModelSim仿真中,時鐘是很嚴格的,但是在真實的晶振所產生的clock卻是不嚴格的,比如高電平和低電平的時間跨度不一樣,甚至非周期性的微小波動。如果只使用posedge,則整個系統的節拍都按照clock上升沿對齊,如果用到了negedge,則系統的節拍沒有統一到一個點上。上升沿到上升沿肯定是一個時鐘周期,但是上升沿到下降沿卻很可能不是半個周期。這都會出現問題。

FPGA特有的東西:Global CLK。FPGA內部有專門的CLK“線”,和一般的邏輯門的走法不一樣,目的是為了保證整個FPGA片內的時鐘一致,這個東西就叫GlobalCLK

467e5dce-2901-11ed-ba43-dac502259ad0.png

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110163
  • 觸發器
    +關注

    關注

    14

    文章

    2000

    瀏覽量

    61229
  • 上升沿
    +關注

    關注

    0

    文章

    3

    瀏覽量

    1788

原文標題:Verilog學習筆記

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問AFE4400為什么要用22位AD轉換不用16位?

    AFE4400為什么要用22位AD轉換不用16位?除了精度的原因,還有什么別的原因嗎?
    發表于 12-24 06:53

    Verilog:【8】基于FPGA實現SD NAND FLASH的SPI協議讀寫

    ,seg_data_0}) ); always@(posedge clk or negedge rst_n) begin if(rst_n == 1\'b0) wr_cnt <= 10\'d0
    發表于 06-21 17:58

    關于Verilog的一些基本語法

    一、了解不同的變量類型 ①、wire和reg的區別 verilog的變量類型有wire類型和reg類型。在實際的電路wire類型對應的就是一根導線,只存在傳輸的作用。reg類型在
    發表于 05-31 18:31

    新手入門的簡單小例子-05-重制版03基礎計數模塊

    :0] CNT; parameter CNT_MAX = 16\'d49999; always @(posedge clk or negedge rst_n)begin if( rst_n
    發表于 04-28 11:05

    新手入門的簡單小例子-05-02

    clk or negedge rst_n) if( rst_n == 1\'b0 ) min_data <= 6\'b0; else if( (min_data == 6\'d59
    發表于 03-26 14:31

    新手入門的簡單小例子-05-01

    ); parameter SEC_1S_MAX = 26\'d50_000_000; reg [25:0] count; //板載時鐘轉化為sec計數標志 always @(posedge clk
    發表于 03-26 11:41

    verilog實現卷積運算

    Verilog實現卷積運算,你可以使用以下示例代碼。這里假設輸入數據是有符號8位數,輸出數據也是有符號8位數。卷積在數字信號處理通常指的是兩個序列的逐元素乘積的和,也就是點乘。 module
    發表于 03-26 07:51

    Verilog 電子時鐘實現

    Verilog實現一個簡單的電子時鐘,你可以使用一個計數器來周期性地遞增一個計數值,然后根據這個計數值來顯示時鐘的不同時刻。以下是一個簡單的例子: module clock_display
    發表于 03-26 07:48

    verilog語音實現浮點運算

    , mantissa} = a; // 將a的符號位、指數部分和尾數部分提取到對應變量 end always @(posedge clk) begin if (reset ==
    發表于 03-25 21:49

    8位串口收發器verilog語言實現

    end // FSM state flip-flops always @ (posedge clk or negedge rst_n) begin if (!rst_n
    發表于 03-25 21:45

    新手入門的簡單小例子-04-2 建模實現

    ; regbit_flag; reg [7:0]data_req; //對應的1S計數 always @(posedge clk or negedge rst_n) if( rst_n == 1
    發表于 03-17 14:29

    芯片中的clk引腳是什么意思

    Clk引腳在芯片中是時鐘信號的輸入引腳。時鐘信號在數字電路起著非常重要的作用,它用于同步芯片內各個模塊的操作,確保它們按照正確的時間序列執行任務。 時鐘信號的輸入通常由外部晶振或振蕩器提供,被接入
    的頭像 發表于 03-08 16:41 ?8778次閱讀

    veriloginput和output作用

    Verilog,input和output用于定義模塊的輸入和輸出端口。它們是用于通信的關鍵元素,定義了模塊與其它模塊之間的數據傳輸接口。通過input和output端口,模塊之間可以互相傳遞數據
    的頭像 發表于 02-23 10:29 ?3293次閱讀

    verilogfor循環是串行執行還是并行執行

    的for循環也是并行執行的。 Verilog的for循環可以用來實現重復的操作,例如在一個時鐘周期中對多個電路進行操作。在循環內部,多個語句可以同時執行,不受循環次數的限制。這種并行執行的機制使得
    的頭像 發表于 02-22 16:06 ?3021次閱讀

    verilog function函數的用法

    Verilog 是一種硬件描述語言 (HDL),主要用于描述數字電子電路的行為和結構。在 Verilog ,函數 (Function) 是一種用于執行特定任務并返回一個值的可重用代碼
    的頭像 發表于 02-22 15:49 ?5881次閱讀
    主站蜘蛛池模板: 男女交性视频无遮挡全过程| 久久精品成人免费网站| 亚洲精品在线免费| 亚洲、国产综合视频| 亚州AV中文无码乱人伦在线 | 亚洲高清视频网站| 新影音先锋男人色资源网| 亚洲国产高清在线观看视频| 99久久e免费热视频百度| YELLOW高清在线观看2019| 村妇偷人内射高潮迭起| 国产精品亚洲二线在线播放 | 九九热在线视频观看这里只有精品| 精品无人区麻豆乱码1区2| 狼好色有你好看| 日本性hd| 亚洲欧美日韩国产另类电影| 综合伊人久久| 国产 亚洲 另类 欧美 在线| 国色天香视频在线社区| 老熟女毛茸茸浓毛| 少妇高潮惨叫久久久久久电影| 亚洲二区电影| 国产1广场舞丰满老女偷| 欧美亚洲国产专区在线| 亚洲免费精品视频| 国产99久久久国产精品免费看| 免费成人高清在线视频| 污漫日本E同人| 做暧暧免费30秒体验| 久久精品热在线观看30| 色欲AV蜜臀AV在线观看麻豆| fyeex性欧美人与曾| 精品麻豆一卡2卡三卡4卡乱码| 色欲蜜臀AV免费视频| 把英语老师强奷到舒服动态图| 蜜芽最新域名解析网站| 999www成人免费视频| 黑人巨茎vide抽搐| 色狐直播免费观看| 2018国产天天弄谢|