- Área Científica de Computadores

Transcrição

- Área Científica de Computadores
Departamento de Engenharia Electrotécnica e de
Computadores
Instituto Superior Técnico
Universidade Técnica de Lisboa
Microprocessadores
Notas sobre a utilização de Símbolos e Buses no Editor de
Esquemáticos da Xilinx
(Versão 1.0.0)
João Paulo B. Carvalho
Março de 2005
Departamento de Engenharia Electrotécnica e de Computadores
Microprocessadores
Instituto Superior Técnico - Universidade Técnica de Lisboa
1. INTRODUÇÃO
Este texto destina-se a introduzir o uso de buses e símbolos no Xilinx Schematic Editor - ECS. O
domínio destas duas “facilidades” do editor de esquemáticos é essencial quando se pretendem criar
projectos complexos que envolvam o uso e transferência de vários bits em paralelo (bus), como é o
caso do projecto de Datapaths ou de Unidades Lógicas e/ou Aritméticas. A abordagem adoptada é a
da criação de um projecto (simples), que será demonstrado e ilustrado passo a passo. Serão
igualmente mencionados certos cuidados a ter com o uso de buses e símbolos, de forma a que as
ditas “facilidades” não se transformem em dificuldades ;o).
O projecto a construir consiste simplesmente na interligação e controlo de 2 registos de 4 bits.
O circuito tem como entradas:
•
Um bus de 4 bits de dados – IB;
•
Uma variável SRW que selecciona qual o registo onde deverá ser escrito o conteúdo do bus de
dados;
•
Uma variável SRR, que selecciona o registo a ser lido.
E como saída, um bus de 4 bits de dados – OB – que recebe o conteúdo do registo seleccionado por
SRR.
2. DESENHO E UTILIZAÇÃO DE BUSES
Um Bus (em Português, o termo adequado será Barramento), não é mais do que um conjunto de
linhas associadas a um mesmo nome, e que normalmente são utilizadas para transferir informação
representada por vários bits. No ECS, um bus tem que ter sempre um nome que respeite a seguinte
convenção NomeBus(n:0), em que:
•
NomeBus é um nome à escolha (de preferência um que faça sentido);
•
(n:0) indica a dimensão do bus.
Por exemplo, um bus de entrada de dados de 4 bits poderá ser nomeado DataIn(3:0).
Um Bus distingue-se visualmente no editor de esquemas por ser representado por uma linha grossa.
A cada linha de um Bus é usualmente atribuído um peso, e podemos referir-nos a uma determinada
linha indicando o nome do bus e o respectivo peso. Por exemplo, o bus indicado anteriormente é
constituído pelas linhas DataIn (3), DataIn (2), DataIn(1) e DataIn(0). Podemos igualmente aceder
a um conjunto de linhas do bus: para aceder às 3 linhas de maior peso podemos por exemplo
escrever DataIn(3:1).
Como indicado acima, para o projecto que se pretende desenhar serão necessários pelo menos 2
buses de 4 bits:
•
IB(3:0), InputBus, que contém os dados de entrada;
•
OB(3:0), OutputBus, que conterá os dados de saída.
No entanto, e devido a opções de projecto, poderão ser necessários mais.
O primeiro passo para o desenho do esquemático (assumindo que já se criou um novo projecto e
abriu o editor de esquemáticos, ver “Manual de Introdução ao Xilinx”, disponível na página da
cadeira), é a selecção dos componentes a utilizar, devendo para isso seleccionar-se a ferramenta
“Add Symbol”
projecto.
Símbolos e Buses em Xilinx
, que abrirá uma janela com a biblioteca de componentes disponível para o seu
2
Uke2005
Departamento de Engenharia Electrotécnica e de Computadores
Microprocessadores
Instituto Superior Técnico - Universidade Técnica de Lisboa
Este projecto necessita obviamente de 2 registos de 4 bits cada. Afim de procurar os registos
disponíveis pode utilizar-se a janela “Categories”, onde se seleccionará a opção “Flip-Flop” (não
nos podemos esquecer que um registo não é mais que um conjunto de Flip-Flops. Seleccione na
janela de símbolos, o FD4RE, que é um registo de 4 bits com carregamento em paralelo e clear
síncrono. Coloque dois FD4RE na área de desenho(chamemos-lhes A e B).
Cada um desses registos tem 4 entradas de dados (DA3 a DA0, e DB3 a
DB0) e 4 saídas (QA3 a QA0, e QB3 a QB0). As 4 entradas de dados
deverão ser ligadas ao InputBus.
2.1. DESENHO E LIGAÇÃO DO BUS DE ENTRADA
Para se desenhar um Bus, procede-se da seguinte forma:
1. Seleccionar a ferramenta “Add Wire”
;
2. Desenhar uma linha da froma usual (de preferência ao lado dos
registos - ver figura);
3. Seleccionar a ferramenta “Add Net Name”
;
4. Dar um nome à linha na caixa “Name” da janela “Options”. Escolher o nome IB(3:0);
5. Clicar sobre a linha. Quando se dá a uma linha um nome cujo formato o ECS associa a um bus,
cria-se automaticamente um bus cuja dimensão é indicada pelo nome. A espessura do desenho
da linha é automaticamente aumentada para indicar um bus.
Figura 1: Quando se associa a uma linha o nome de um bus, o ECS transforma-a automaticamente num bus
De notar que a partir do momento em que um nome é definido, a utilização desse nome em duas
linhas distintas faz com que as linhas fiquem ligadas entre si mesmo que tal não apareça desenhado.
Para aceder a uma linha ou conjunto de linhas de um bus basta utlizar o nome correspondente. Por
exemplo, para ligar a entrada D0 do registo A à linha 0 do bus IB, basta ligar uma linha a D0 e darlhe o nome IB(0). Mesmo que a linha não seja desenhada ligada a IB, a associação fica
automaticamente feita. No entanto, e afim de facilitar a compreensão do esquema, é por vezes
conveniente desenhar a ligação entre o bus e a linha. Isso pode ser feito utilizando a ferramenta
“Add Bus Tap”
Símbolos e Buses em Xilinx
e dando, mais uma vez, o nome adequado à ligação.
3
Uke2005
Departamento de Engenharia Electrotécnica e de Computadores
Microprocessadores
Instituto Superior Técnico - Universidade Técnica de Lisboa
Existe um outro modo de criação de bus taps. Neste modo, sempre que se cria uma linha entre
um símbolo já existente na folha e um bus, o bus tap é criado automaticamente.
Para criar a linha, após seleccionar a ferramenta “Add Wire”
, deve-se garantir que a opção
“Automatically add bus tap between bus and the
wire" está activada. A partir deste momento
podem-se fazer as ligações entre os simbolos e o
bus, sendo o bus tap criado automaticamente.
Neste modo não é possível ligar uma linha já
existente a um bus. De notar que, após a criação da linha e correspondente bus tap, continua a
ser necessário dar um nome adequado a essas linhas.
Dado que IB é um bus de entrada de dados, deve-se ainda associar-lhe um terminal. O processo
é semelhante ao utilizado para associar um terminal a
uma linha simples: basta utilizar a ferramenta “Add I/O
marker”
.
2.2. DESENHO E LIGAÇÃO DO BUS DE SAÍDA
Estando ligado o bus de entrada, tem que se criar e
ligar o bus de saída. Para isso as 4 saídas de cada
registo terão que ser combinadas de alguma forma
antes de serem ligadas ao OutputBus, i.e., QA3 e QB3
deverão ser combinadas e ligadas a OB3, QA2 e QB2
deverão ser ligadas a OB2, e assim sucessivamente.
Como os registos seleccionados não têm saídas de alta
impedância (Tristate), as suas saída não podem ser
ligadas directamente entre si pelo que terá que se
utilizar outra solução.
A solução adoptada para a junção da saída dos registos num único bus, foi a utilização de
multiplexeres controlados pela variável SRR. Como os buses são de 4 bits, são à partida necessários
4 mux (um para cada bit do bus) com 1 variável de selecção (e consequentemente 2 entradas de
dados). Assim cada mux receberá uma entrada do registo A e uma entrada do registo B, e terá uma
saída ligada ao bus OB. Com esta configuração OB3 assumirá o valor de QA3 se SRR=0, e de QB3
se SRR=1. O mesmo acontecerá com as restantes linha de OB.
Para a interligação entre RA, RB e o mux, podem utilizar-se linhas simples, mas é igualmente
possível criar dois buses nas saídas de RA e RB e utilizá-los para efectuar a ligação. No caso em
questão a utilização de buses adicionais não traz nenhum ganho em virtude de o mux estar colocado
ao pé dos registos, mas faria todo o sentido se o mux estivesse num local mais afastado do projecto.
Em termos de buses, o projecto fica concluído, mas ainda é necessário ligar todas as entradas de
controlo e de enable dos componentes utilizados. De notar que a definição de terminais de
entrada/saída nos buses tem especial relevância quando se quiser criar um símbolo a partir do
projecto desenhado, o que será tratado na secção seguinte.
Símbolos e Buses em Xilinx
4
Uke2005
Departamento de Engenharia Electrotécnica e de Computadores
Microprocessadores
Instituto Superior Técnico - Universidade Técnica de Lisboa
3. CRIAÇÃO E UTILIZAÇÃO DE SÍMBOLOS
Esta secção dedica-se, tal como indica o título, à criação e utilização de símbolos no ECS. Um
símbolo não é mais que uma “caixa preta” contendo um determinado circuito interno, do qual só se
conhecem as suas interfaces com o exterior (e supostamente o seu comportamento). Apesar de tal
normalmente passar despercebido, muitos dos componentes que já utilizaram em Xilinx, não são
mais do que símbolos. É o caso do registo que estamos a utilizar neste projecto. Para se verificar o
que está dentro da caixa negra que é o FD4RE, basta clicar com o botão direito do rato no registo,
seleccionar a opção “Symbol”, e de seguida “Push into Symbol”. Após esta operação é aberta uma
nova janela de desenho onde se podem ver os componentes do FD4RE (que neste caso são 4 FlipFlops) (Figura 2).
Os benefícios da definição de símbolos e criação de níveis hierárquicos são óbvios. Assim, sempre
que se está a desenvolver um projecto complexo, deve-se aproveitar esta facilidade. Afim de se
exemplificar o processo de criação de símbolos, utilizemos o retornemos ao projecto que
desenvolvemos na secção 1.
Símbolos e Buses em Xilinx
5
Uke2005
Departamento de Engenharia Electrotécnica e de Computadores
Microprocessadores
Instituto Superior Técnico - Universidade Técnica de Lisboa
Figura 2: Conteúdo do símbolo FD4RE
Analizando as linhas existentes no símbolo FD4RE, verifica-se que todas as linhas de controlo e
dados, quer sejam de entrada, quer sejam de saída, estão definidas como um terminal de
entrada/saída:
;
. Este é um ponto essencial para que se possa criar um símbolo de forma
correcta, pois é a única forma de indicar ao Xilinx quais são as interfaces com o exterior para o
símbolo que pretendemos criar.
Assim, antes de criarmos um símbolo para o nosso projecto, é necessário definir como entradas
todas as linhas de controlo, enable e relógio. Essas linhas são:
•
CE – Clock Enable dos registos. É a entrada que indica se o registo é ou não escrito com os
valores D3 a D0 presentes nas suas entradas. O registo é escrito se CE estiver a High;
•
R – Reset, ou Clear dos registos. Limpa o registo, i.e., coloca todos os bits do registo a zero;
•
S0 – Select. Entrada de selecção dos muxs. A Low selecciona as entradas “0, e a High as
entradas “1”;
•
E – Enable dos muxs. Tem que estar a High para que os muxs funcionem.
As entradas S0 vão ter um controlo comum que corresponde à entrada externa SRR, que controla
qual o registo de onde se querem retirar os dados a colocar em OB. Como tal basta ligar todos os
sinais S0, e definir um terminal de entrada com o nome SRR.
Os CE são igualmente entradas externas, estando relacionadas com a variável de controlo SRW,
que define qual o registo onde se querem escrever os dados de IB. Visto que se quer sempre
escrever ou num, ou noutro registo (e nunca nos 2 em simultâneo), e que quando SRW=0 se quer
escrever em RA, e quando SRW=1 se quer escrever em RB, então CE B = SRW , e CE A = SRW .
Basta assim adicionar um inversor e definir SRW como um terminal de entrada externo.
Símbolos e Buses em Xilinx
6
Uke2005
Departamento de Engenharia Electrotécnica e de Computadores
Microprocessadores
Instituto Superior Técnico - Universidade Técnica de Lisboa
Os Reset podem ou não ser entradas externas do projecto. Caso se pretenda que o utilizador possa
limpar os registos directamente, então deverão ser definidas como entradas externas. Caso não se
pretenda essa funcionalidade adicional, então poderão ser ligadas a GND de forma a que estejam
sempre inactivas.
De forma a que os muxs estejam permanentemente activos, os seus enables podem estar
permanentement ligado a VCC.
Estando o esquemático do projecto concluído, e com todos os terminais definidos, a criação de um
Símbolo e do símbolo a ela associado é muito simples. Basta gravar o esquema, regressar ao Project
Navigator, seleccionar o esquema na janela “Sources in Project”, e finalmente, seleccionar a opção
“Create Schematic Symbol” na janela “Processes for Source”.
Símbolos e Buses em Xilinx
7
Uke2005
Departamento de Engenharia Electrotécnica e de Computadores
Microprocessadores
Instituto Superior Técnico - Universidade Técnica de Lisboa
Após a criação do símbolo aparece um
na janela de processos. O símbolo fica automaticamente
guardado na directoria do projecto. Para o utilizar, basta abrir um novo esquema, seleccionar a
ferramenta “Add Symbol”
, e na janela de símbolos seleccionar a directoria correspondente ao
nosso projecto. O símbolo surgirá na janela de símbolos. De notar que devido ao facto de se terem
definido previamente todas as entradas e saídas
do circuito, os pinos do novo símbolo ficam
automaticamente definidos, e que as interfaces
dos buses são diferentes das interfaces das
linhas de 1 bit e indicam a dimensão do bus.
Se pretender alterar as entradas e saídas do
símbolo que criou, seleccione-o com o botão
direito do rato, escolha a opção “Symbol” e de
seguida “Edit Symbol”. É lançada uma
aplicação que permite alterar o símbolo lógico
do componente seleccionado, nomeadamente a
disposição das entradas e das saídas. Cuidado
com a alteração das designações, pois estas
podem causar alterações no funcionamento
interno dos componentes.
4. SIMULAÇÃO DO PROJECTO REALIZADO
A simulação do funcionamento do componente criado pode ser feita a nível do circuito interno do
símbolo, ou a nível externo (i.e., utilizando o próprio símbolo). Para tal devem utilizar-se os
métodos aprendidos no laboratório de Sistemas Digitais. Alternativamente recomenda-se a
simulação recorrendo directamente ao ModelSim. Para tal devem igualmente criar-se as formas de
onda de teste (ficheiro com extensão .tbw – ver manual de Introdução ao Editor de Esquemáticos da
Xilinx), mas em vez da opção “Generate Expected Simulation Result”, deve escolher-se a opção
“Simulate Behavoral Model”.
Símbolos e Buses em Xilinx
8
Uke2005

Documentos relacionados