[导读] 1、前言 之前在公司负责制定代码规范,费了九牛二虎之力,终于整理出来一份文档。由于保密规定的缘故,无法与大家直接分享这份文档。但是,文档中的大部分规范都是我自己长期总结出来的,在这里也与大家分享一下。2、代码示范为求直观,首先贴上一份示范代码,然后我再进行逐条详细解释。以下代码...
1、前 言 之前在公司负责制定代码规范,费了九牛二虎之力,终于整理出来一份文档。由于保密规定的缘故,无法与大家直接分享这份文档。但是,文档中的大部分规范都是我自己长期总结出来的,在这里也与大家分享一下。
2、代码示范为求直观,首先贴上一份示范代码,然后我再进行逐条详细解释。以下代码是我之前做的一个同步FIFO模块,代码如下:| 001 | //====================================================== |
| 002 | // Copyright (C) 2015 By Kellen.Wang |
| 003 | // mail@kellen.wang, All Rights Reserved |
| 004 | //====================================================== |
| 006 | // Author : Kellen Wang |
| 007 | // Contact : kellen.wang124@gmail.com |
| 009 | //======================================================= |
| 011 | //======================================================== |
| 013 | parameter DEPTH = 32, |
| 014 | parameter DATA_W = 32 |
| 019 | input wire [DATA_W-1:0] wdata , |
| 020 | output wire full_flg , |
| 022 | output wire [DATA_W-1:0] rdata , |
| 023 | output wire empty_flg |
| 025 | `ifdef DUMMY_SYNC_FIFO |
| 026 | assign full_flg = 1'd0; |
| 028 | assign empty_flg = 1'd0; |
| 030 | `include "get_width.inc" |
| 031 | //==================================================== |
| 032 | // Constant Definition : |
| 033 | //=================================================== |
| 034 | localparam DLY = 1'd1; |
| 035 | localparam FULL = 1'd1; |
| 036 | localparam NOT_FULL = 1'd0; |
| 037 | localparam EMPTY = 1'd1; |
| 038 | localparam NOT_EMPTY = 1'd0; |
| 039 | localparam ADDR_W = get_width(DEPTH-1); |
| 040 | //================================================== |
| 041 | // Variable Definition : |
| 042 | //================================================== |
| 043 | reg [ADDR_W-1:0] waddr; |
| 044 | reg [ADDR_W-1:0] raddr; |
| 045 | wire [ADDR_W-1:0] waddr_nxt; |
| 046 | wire [ADDR_W-1:0] raddr_nxt; |
| 047 | //================================================== |
| 049 | //================================================== |
| 050 | assign waddr_nxt = waddr 1; |
| 051 | assign raddr_nxt = raddr 1; |
| 052 | assign full_flg = (waddr_nxt == raddr)? FULL : NOT_FULL; |
| 053 | assign empty_flg = (waddr == raddr)? EMPTY : NOT_EMPTY; |
| 054 | assign iwreq = wreq
扫描二维码,关注更多精彩内容
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
|