- 1、本文档共66页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
天津大学ASIC设计中心数字集成电路设计基本流程初稿Shiyafeng
数字集成电路设计基本流程
(初稿)
Shiyafeng
2012.4
数字集成电路设计的基本流程如图1所示。这里我们以一个基本的例子来说明数字集成电路的基本设计流程。
RTL代码编写
根据设计要求编写verilog代码。
示例:
要求:编写一个奇数分频器,例如实现对原始时钟clk的7分频。
分析:目的是要实现奇数个分频,那么首先是要实现时钟的半个周期的分离问题。这里我们通过将原始时钟clk信号进行处理后,得到触发信号clk_tmp,该信号在前三个周期与clk相同,在接下来的半个周期变为~clk,这样就会在本来会出下时钟下降沿的时候再次出现时钟上升沿,从而使用该触发信号作为触发计数信号的话就可以实现7分频。要产生clk_tmp信号可以考虑将clk和分频信号进行异或操作即可得到。
Verilog代码如下:
//Verilog HDL written by shiyafeng
//Generate clock divided by odd number
//Company:Tianjin University
//Date:2012.4.10
module odd_div7(//input signals
clk,
rst_n,
//output signals
clk0,
clk1,
clk2,
clk3);
//declare I/O ports
input clk,rst_n;
output clk0,clk1,clk2,clk3;
//internal signal declaration
reg[7:0] state,next_state;
reg clk0,clk1,clk2,clk3;
wire clk_tmp;
//one-hot code for fsm
parameter s0=8b0000_0001,
s1=8b0000_0010,
s2=8b0000_0100,
s3=8b0000_1000,
s4=8b0001_0000,
s5=8b0010_0000,
s6=8b0100_0000,
s7=8b1000_0000;
//state triggered by the rising edge of clk_tmp and reseted by asynchronous rst_n with 1b0
always@(posedge clk_tmp or negedge rst_n)
if(!rst_n)
state=s0;
else
state=next_state;
//fsm state cycle with s0--s1--s2--s3--s4--s5--s6--s7--s0
always@(rst_n or state or clk0 or clk1 or clk2 or clk3)
if(!rst_n)
{clk3,clk2,clk1,clk0}=4b0000; //reset by rst_n if rst_n=1b0
else
case(state)
s0:
begin
next_state=s1;
{clk3,clk2,clk1,clk0}=4b0000; //clk0=1b0,clk1=1b0,clk2=1b0,clk3=1b0
end
s1:
begin
next_state=s2;
{clk2,clk1,clk0}=4b0001; //clk0=1b1,clk1=1b0,clk2=1b0,clk3=1b0
end
s2:
begin
next_state=s3;
{clk3,clk2,clk1,clk0}=4b0011; //clk0=1b1,clk1=1b1,clk2=1b0,clk3=1b0
end
s3:
begin
next_state=s4;
文档评论(0)