这个Verilog程序功能是什么啊? 这个verilog程序中,case中怎么写?这样调用始终不对...

verilog \u7a0b\u5e8f\uff0c\u4ec0\u4e48\u610f\u601d\u554a\uff0c\u5c24\u5176\u662f\u8fd9\u4e2a<<

>\u662f\u79fb\u4f4d\u8fd0\u7b97\u7b26\uff0cx<<y\u7684\u610f\u601d\u5c31\u662f\u628ax\u6309\u7167\u4f4d\u5de6\u79fby\u4f4d\u3002\u6bd4\u5982x = 1100 1010, y = 2\u90a3\u4e48x << y = 1100 1010 00.
\u540c\u7406>>\u5c31\u662f\u53f3\u79fb\u5566\uff0c\u4e00\u6837\u7684\u3002
\u5728verilog\u4e2d\uff0c\u56e0\u4e3aFPGA\u4e0d\u592a\u597d\u5b9e\u73b0\u4e58\u9664\u4e4b\u7c7b\u7684\u8fd0\u7b97\uff0c\u6240\u4ee5\u6709\u65f6\u4f1a\u7528\u5de6\u79fb\u53f3\u79fb\u6765\u8868\u793a\u67d0\u4e9b\u7279\u6b8a\u60c5\u51b5\u7684\u4e58\u9664\u6cd5\u3002\u6bd4\u5982\u8fd9\u53e5ClkFrequency>>5\u5c31\u662f\u76f8\u5f53\u4e8eClkFrequency/(2^5).

case\u4e0d\u80fd\u8c03\u7528\u4f8b\u5316\u5143\u4ef6\uff0c\u628a\u5404\u79cd\u6ce2\u5f62\u7684\u4ea7\u751f\u6a21\u5757\u6539\u6210task\u6216\u8005function\uff0c\u7136\u540e\u5728case\u91cc\u53ef\u4ee5\u8c03\u7528\u5bf9\u5e94\u7684task\u548cfunction
\u6bd4\u5982\u8bf4\u7528task
case(sel)
2'b00:dds_top_sine dds_top_sine;
2'b01:dds_top_fangbo dds_top_fangbo;
2'b10:dds_top_juchi dds_top_juchi;
2'b11:dds_top_sanjiao dds_top_sanjiao;
endcase
.....
.....
.....
task dds_top_sine dds_top_sine;
output ......
input ......
begin
.....
end
endtask
....
task dds_top_fangbo dds_top_fangbo;
output ....
input ....
....
endtask
.....

这是一个典型的线性反馈移位寄存器,也就是LFSR ( left-feedback shift register )。

初步判断,这个模块会根据输入的B,在每个时钟的上升沿,往结果Q输出Bx75,我想作者可能本身的想法是往原先结果加上Bx75,但是他把TOUT = 32'b0写在了always块了,所以每次clk上升沿,TOUT都会清零。
很明显,这段代码的作者对于电路不了解,对于电路时序关系也不关心,完全是按照一个软件的写法在写Verilog代码,所以才会在always块中定义变量(看看always块开头,是不是很像C代码里,函数开头的变量定义和赋初值)、在always块中使用阻塞赋值并与非阻塞赋值混用。
那段for循环也是写的太复杂,用一个左移操作就可以完成的事情,for循环的电路开销是很大的,因为它实际上是把整个循环铺开,一般设计里能不用就不用。
Verilog是硬件描述语言,先有电路结构才会接着用Verilog去实现。
综上,这段代码没有学习的价值,不建议参考。

  • 涓庤蒋浠舵弿杩拌瑷鐩告瘮 verilog鏈浠涔鐗圭偣
    绛旓細2锛庤兘澶熷鍚勪釜鎶借薄灞傛鐨勬弿杩拌繘琛屼豢鐪熼獙璇侊紝鍙婃椂鍙戠幇鍙兘瀛樺湪鐨勮璁¢敊璇紝缂╃煭璁捐鍛ㄦ湡锛屼繚璇佹暣涓璁¤繃绋嬬殑姝g‘鎬с3锛庡洜涓轰唬鐮佹弿杩颁笌鐗瑰畾鐨勮繃绋嬫棤鍏筹紝鎵浠ュ畠淇冭繘浜嗚璁$殑鏍囧噯鍖栵紝鎻愰珮浜嗚璁$殑鍙噸鐢ㄦс傚鏋滀綘鏈塁璇█鐨勭紪绋嬬粡楠岋紝鍙互鍦ㄥ緢鐭殑鏃堕棿鍐呭涔犲拰鎺屾彙VerilogHDL銆傚洜姝わ紝VerilogHDL鍙互浣滀负瀛︿範HDL...
  • 璇疯В閲婁笅Verilog HDL绋嬪簭
    绛旓細/* 淇″彿瀹氫箟涓庤鏄庯細CLK:涓哄悓姝ユ椂閽燂紱EN:浣胯兘淇″彿,涓1鐨勮瘽锛屽垯鎺у埗鍣ㄥ紑濮嬪伐浣滐紱LAMPA:鎺у埗A鏂瑰悜鍥涚洀鐏殑浜伃;鍏朵腑锛孡AMPA0~LAMPA3锛屽垎鍒帶鍒禔鏂瑰悜鐨勫乏鎷愮伅銆佺豢鐏侀粍鐏拰绾㈢伅锛汱AMPB:鎺у埗B 鏂瑰悜鍥涚洀鐏殑浜伃;鍏朵腑锛孡AMPB0 ~ LAMPB3锛屽垎鍒帶鍒禕鏂瑰悜鐨 宸︽嫄鐏佺豢鐏侀粍鐏拰绾㈢伅锛汚COUNT锛 鐢ㄤ簬A...
  • 姹傚ぇ绁炲府蹇欒В閲杩欎釜绋嬪簭verilog
    绛旓細case(State) 鐘舵佹満杞Щ绋嬪簭 IDLE:begin NextState<=State_A; 杩欓噷鍒濆鐘舵佸簲璇ユ槸idle鍚 end State_A:begin if((cnt==5'b00101)&&(flag==0))NextState<=State_B;else NextState<=State_A;end State_B:begin if((cnt==5'b00000)&&(flag==0))NextState<=State_C;else NextState<...
  • 璋佽兘甯繖缈昏瘧涓涓杩欎釜verilog绋嬪簭
    绛旓細浠g爜涓娈典竴娈电殑瑙i噴鍚э紝濡傛灉杩樻湁浠涔涓嶆槑鐧界殑锛屽彲浠ョ粰鎴戠暀瑷 鏁翠釜绋嬪簭鎬讳綋鐨勬剰鎬濇槸锛氬皢涓涓緭鍏ヤ负50HZ鐨勬椂閽熷垎棰戝緱鍒颁竴涓1HZ鐨勬椂閽燂紝鐒跺悗閫氳繃杩欎釜1HZ鏃堕挓椹卞姩涓や釜璁℃暟鍣ㄨ绠楋紝灏嗚鏁扮殑鍊肩敤涓や釜涓冩鏁扮爜绠℃樉绀哄嚭鏉ワ紝姣忕閽熻鏁板彉鍖栦竴娆°俶odule kk(output [6:0]HEX0,output [6:0]HEX1,input CLOCK_...
  • verilog 绋嬪簭,浠涔鎰忔濆晩,灏ゅ叾鏄杩欎釜<<
    绛旓細<<鍜>>鏄Щ浣嶈繍绠楃锛寈<<y鐨勬剰鎬濆氨鏄妸x鎸夌収浣嶅乏绉粂浣嶃傛瘮濡倄 = 1100 1010, y = 2閭d箞x << y = 1100 1010 00.鍚岀悊>>灏辨槸鍙崇Щ鍟︼紝涓鏍风殑銆傚湪verilog涓紝鍥犱负FPGA涓嶅お濂藉疄鐜颁箻闄や箣绫荤殑杩愮畻锛屾墍浠ユ湁鏃朵細鐢ㄥ乏绉诲彸绉绘潵琛ㄧず鏌愪簺鐗规畩鎯呭喌鐨勪箻闄ゆ硶銆傛瘮濡傝繖鍙lkFrequency>>5灏辨槸鐩稿綋浜...
  • 楹荤儲楂樹汉甯繖娉ㄩ噴瑙i噴涓娈verilog绋嬪簭
    绛旓細First in First out 鍏堝叆鍏堝嚭瀵勫瓨鍣ㄣ俧ifo_wr 鍐橣IFO鐨勪娇鑳 fifo_rd 璇籉IFO鐨勪娇鑳 fifo_data FIFO鐨勬暟鎹紶杈撶鍙 fifo_pf FIFO鐨勬寚閽 fifo_full FIFO瀛樻弧鐨勬爣蹇椾綅 fifo_empty FIFO鏍堢┖鐨勬爣蹇椾綅 杩欎簺閮芥槸鑷繁瀹氫箟鐨勭鍙e悕绉帮紝涓嶆槸鍥烘湁鍑芥暟銆傝繖灏辨槸涓爢鏍堝瘎瀛樺櫒鍝垀~~...
  • 璋佺粰鎴戣В閲婁竴娈Verilog绋嬪簭?
    绛旓細缁忎豢鐪熸棤娉曟娴嬩笅闄嶆部銆備笉鐭ラ亾LZ鐢ㄦ剰浣曞湪锛熶笉鐩存帴鐢–LK涓嬮檷娌胯岄噰鐢╬osedge 妫娴嬶紵clk_negedge 涓嶆槸涓鐩翠細涓轰綆鐢靛钩鍚楋紵鏈変负楂樼數骞斥1鈥欑殑鎯呭喌锛熸ゼ涓诲杩欐浠g爜鍋氳繃浠跨湡娌★紵涓嶅ソ鎰忔濓紝鍓嶉潰閿欏皢iclk鐪嬫垚lclk浜嗐傝嫢iclk鐨勪笅闄嶆部鍒拌揪鍒檌clk_delay1 鍓嶄竴娆¢噰闆嗗埌1锛屽悗涓娆¢噰闆嗗埌0锛堝嵆闅廼clk鍙樺寲鍚屾牱...
  • 姹verilogHDL璇█澶х,瑙i噴涓涓绋嬪簭鎰忔,鏈濂借兘姣忚娉ㄩ噴涓涓,鎰熸縺涓嶅敖...
    绛旓細module HDLC(RXD,RXCLK,RXSET,TXCLK,TXD,TXDS); //module 澶达紝verilog 95椋庢牸 input RXD; //杈撳叆淇″彿 input RXCLK; //杈撳叆鏃堕挓 input RXSET; //杈撳叆鐨勫浣嶄俊鍙 output[7:0]TXD; //杈撳嚭鐨勬暟鎹紝8bit reg [7:0]TXD; //杈撳嚭瀵勫瓨鍣 output[2:0]TXDS; //杈撳嚭淇″彿 reg [2:0...
  • FPGA涓庣數鑴戜覆鍙i氫俊verilog绋嬪簭
    绛旓細//PC鏈轰笂瀹夎涓涓覆鍙h皟璇曞伐鍏锋潵楠岃瘉绋嬪簭鐨鍔熻兘銆//绋嬪簭瀹炵幇浜嗕竴涓敹鍙戜竴甯10涓猙it锛堝嵆鏃犲鍋舵牎楠屼綅锛夌殑涓插彛鎺 //鍒跺櫒锛10涓猙it鏄1浣嶈捣濮嬩綅锛8涓暟鎹綅锛1涓粨鏉 //浣嶃備覆鍙g殑娉㈢壒寰嬬敱绋嬪簭涓畾涔夌殑div_par鍙傛暟鍐冲畾锛屾洿鏀硅鍙傛暟鍙互瀹 //鐜扮浉搴旂殑娉㈢壒鐜囥傜▼搴忓綋鍓嶈瀹氱殑div_par 鐨勫兼槸0x145锛...
  • 鐢verilog绋嬪簭璁捐涓涓叿鏈夊紓姝ユ竻闆鍔熻兘鐨24杩涘埗璁℃暟鍣
    绛旓細module counter_24 ( input clk, input rst, input cnt_in ,output reg cnt_out );reg [4:0] cnt;always @ (posedge clk or posedge rst_n) begin if (rst) cnt <= 5'b0;else if (~cnt_in) cnt <= cnt;else if (cnt == 5'b10110) cnt <= 5'b0;else cnt <= cnt + 1'...
  • 扩展阅读:plc基础知识指令27个 ... verilog怎么读 ... verilog语言编程软件 ... verilog三目运算符 ... verilog菜鸟教程 ... verilog仿真测试文件 ... verilog语言入门教程 ... verilog编程实例程序 ... verilog 延时 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网